0

是否可以在设置并插入 SQL 组件后检索带有参数值的 SQL 语句?

SQL 语句:

SELECT * FROM SomeTable
WHERE SomeColumn = :pSomeValue;

代码:

procedure LoadParams(aValue: string);
begin
  Qry.Close;
  Qry.ParamByName('pSomeValue').AsString := aValue;
  MessageDlg(Qry.SQL.Text, mtInformation, [mbOK], 0); // this does not show the value but the parameter name.     
  Qry.Open;
end;

我希望能够在打开语句之前看到它,但是当我现在尝试这个时,我得到的是参数名称而不是值。

4

2 回答 2

4

查询参数通常在 DBMS 中被替换,即这些值是通过连接单独发送的,而不是作为 SQL 语句的一部分。如果您希望同时查看 SQL 和值,数据库的日志可能会帮助您。

于 2013-04-17T08:54:14.060 回答
1

您可以做的一件事是复制参数并将其放入 SELECT 中:

SELECT :pSomeValueDuplicate AS paraminput, * FROM SomeTable
WHERE SomeColumn = :pSomeValue;

Qry.ParamByName('pSomeValue').AsString := aValue;
Qry.ParamByName('pSomeValueDuplicate').Value := Qry.ParamByName('pSomeValue').Value;

然后您可以检查字段: paraminput 以获取您用作输入的内容。不知何故,我无法让 Delphi 在 1 个查询中两次使用相同的参数。

SELECT 'SELECT * FROM SomeTable WHERE SomeColumn ='+ :pSomeValueduplicate AS thesqlinput,* FROM SomeTable WHERE SomeColumn = :pSomeValue;

实际上,您只需一个参数即可:

SELECT 'SELECT * FROM SomeTable WHERE SomeColumn ='+ SomeColumn AS thesqlinput,* FROM SomeTable WHERE SomeColumn = :pSomeValue;
于 2013-04-17T12:04:02.973 回答