4

我在 Devart TMSQuery.SQL 中有一个带有参数的查询。就像是

select * from customers
where customer = :CustomerID

在我做的代码中

// Delphi
sqlcustomer.ParamByName('CustomerID').asinteger := 4;
sqlcustomer.open;

我想调试并查看发送到服务器的确切 sql 命令,如果我尝试使用 TMSQuery.sql 我只有:CustomerID,而我想要这个:

select * from customers
where customer = 4

有没有一种快速的方法可以在不读取所有参数并大量重建查询的情况下实现这一点?

当然我有一个非常大的查询,超过 100 个参数,这就是我需要这个的原因

4

2 回答 2

4

发送到服务器的参数化查询的实际 SQL 语句从不包含参数值的文本表示。相反,它使用占位符字符,例如问号。在您的示例中,这将是select * from customers where customer = ? 在服务器上准备的,然后由客户端在单独的调用中发送参数值。

于 2010-09-02T09:52:34.537 回答
3

如果您使用的是 Devart 组件,那么他们有一个 TMSSQLMonitor 组件可能会有所帮助。如果您通过 odbc 连接,您可以通过在 odbc 选项卡上打开跟踪来监控 sql。

如果您使用其他组合,请描述。

于 2010-09-02T09:59:57.630 回答