如何在Delphi TSQLQuery中使用Firebird的Execute Block?

时间:2017-12-22 14:00:16

标签: delphi parameters firebird dbexpress

使用dbExpress TSQLQuery,我无法使用execute block命令执行查询,因为该命令需要?符号表示参数,而Delphi使用:作为参数,然后,如果在block创建变量并将其用作

select data from table where .... into :var;

“:var”被TSQLQuery解释为参数。

使用Delphi执行执行块语句的方法是什么?

如果我写:

execute block(param1 char(1)=:param1)

我可以从Delphi中为:param1加载一个值,但是当我用Query.OpenQuery.ExecSQL执行它时,会返回错误指示缺少参数吗?因为在Firebird执行块写的是:

execute block(param1 char(1)=?param1)

有没有办法用TSQLQuery解决这个问题?

3 个答案:

答案 0 :(得分:0)

  

“:var”被TSQLQuery

解释为参数

您可以通过将ParamCheck属性设置为False来关闭它。

答案 1 :(得分:0)

对我有用的唯一方法就是不在块中加入“:”作为内部变量。 防爆。 select data from table into var;这就是工作!然后,因为这是一个块,用if来评估var!

if (var = 1)
  do something; 
else
  do anotherthing;

并解决了业务问题!

答案 2 :(得分:0)

首先,您可以禁用

的TSQLQuery属性
ParamCheck := False;

然后在执行块的开头,删除参数路径..

execute block (param1 char (1) = :param1)

并且您的查询已通过(%s)而非:param1.

我在问题中这样做并解决了!