ExecSQL中的参数AExecDirect有什么作用?

时间:2018-06-01 18:16:14

标签: delphi firedac

我正在阅读班级TFDCustomQuery的文档,我对AExecDirect中参数function ExecSQL(AExecDirect: Boolean): LongInt; overload;的含义感到好奇。

文档(http://docwiki.embarcadero.com/Libraries/Tokyo/en/FireDAC.Comp.Client.TFDCustomQuery.ExecSQL)没有解释此参数的作用。

1 个答案:

答案 0 :(得分:2)

如果您将 True 传递给 AExecDirect 参数,FireDAC将在执行前省略命令准备(以及与使用过的DBMS相关的一些事项)。因此,它的目的只是在没有明确命令准备的情况下执行一次命令。

有关此ExecSQL方法重载的重要事项。调用此对象会修改对象的DirectExecute选项(通过 AExecDirect 参数值),这可能不是预期的。

当一个人调用此方法重载并且 True 值传递给 AExecDirect 参数时,可能会出现问题,期望稍后调用另一个{{3重载调用将隐式准备命令。它们不会,因为ExecSQL选项将被启用。

因此,DirectExecute选项引用实际上描述了此参数(因此此方法的此参数重载设置此选项):

  

控制SQL语句的准备。

     

使用DirectExecute属性指定FireDAC是否应该   在执行之前准备一个SQL语句(False)或执行它   直接(真)。默认值为False。

     

此属性最初是为MS SQL Server支持引入的。该   准备和直接执行可能会产生不同的影响,甚至   准备好的执行可能会失败。如果你会得到特殊的错误,那么   尝试将DirectExecute设置为True。