使用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.Open
或Query.ExecSQL
执行它时,会返回错误指示缺少参数吗?因为在Firebird执行块写的是:
execute block(param1 char(1)=?param1)
有没有办法用TSQLQuery解决这个问题?
答案 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.
我在问题中这样做并解决了!