使用dbExpress TSQLQuery,我不能使用execute block命令执行查询,因为该命令需要?
表示参数,而 Delphi 使用:
表示参数,那么,如果在该块的主体中创建变量并将其用作
select data from table where .... into :var;
“:var”被TSQLQuery解释为参数。
在 Delphi 中执行execute块语句的方法是什么?
如果我写:
execute block(param1 char(1)=:param1)
我可以从 Delphi 中为:param1加载一个值,但是当我用Query.Open
或Query.ExecSQL
执行它时,会返回一个错误,指示缺少参数so?,因为在Firebird中执行块是这样写的:
execute block(param1 char(1)=?param1)
有没有办法用TSQLQuery解决这个问题?
4条答案
按热度按时间jhkqcmku1#
首先,您可以禁用的TSQLQuery属性
然后在execute块的开头,删除参数path。
并且您的查询传递的是
(%s)
而不是:param1.
我在我的问题中这样做并解决了它!
l7mqbcuq2#
“:var”被TSQLQuery解释为参数
您可以通过将
ParamCheck
属性设置为False来关闭此功能。8hhllhi23#
对我来说,唯一有效的方法是不要在块中为内部变量放置“:”。例如,
select data from table into var;
,这就是工作!,然后,因为这是一个块,所以用if来评估var!解决业务!
yptwkmov4#
最近我遇到了类似的问题,但是使用
FDQuery
(Firedac),找到的解决方案是将TFQUery
的属性ResourceOptions.PreprocessCmdText
设置为“False”。例如: