插入后如何在SQL中输出参数值?

时间:2013-04-17 08:50:42

标签: sql delphi parameters nexusdb elevatedb

在设置并插入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;

我希望能够在打开之前看到该语句,但是当我尝试这个时,我得到了param名称而不是值。

2 个答案:

答案 0 :(得分:4)

查询参数通常在DBMS中替换,即值分别通过连接发送,而不是作为SQL语句的一部分。如果您希望一起查看SQL和值,则DB的日志可能会帮助您。

答案 1 :(得分: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;