FireDAC无法识别查询参数

时间:2017-02-22 01:19:43

标签: firedac delphi-10.1-berlin

我有以下数组,其中包含SQL语句的行:

ng-init

在运行时,我执行以下任务:

  SQLQueryLines : array [00..04] of string = 
      ('select   "Costumer"."Name", ',
                '"Costumer"."Age", ',
                '"Costumer"."Gender" '
       'from     "Costumer" '
       'where    "Costumer"."Name" = :aCostumerName');

但FireDAC无法识别参数" aCostumerName"。

但是,如果我直接进行分配,它会识别参数:

  Query.SQL.Add (SQLQueryLines [0]);
  Query.SQL.Add (SQLQueryLines [1]);
  Query.SQL.Add (SQLQueryLines [2]);
  Query.SQL.Add (SQLQueryLines [3]);
  Query.SQL.Add (SQLQueryLines [4]);

Query是一个TFDQuery。

我无法弄清楚为什么FireDAC应该对上述作业采取不同的处理方式,而且我没有找到任何搜索网络的帮助。任何人都有这个问题的答案吗?感谢

1 个答案:

答案 0 :(得分:0)

从字符串数组填充字符串列表集合与常量之间没有区别。但是你的第二个发布代码甚至无法编译(因为第二行的最后一个逗号)。因此,请尽量确保您不会以某种方式修改您的实际代码中的查询。

顺便说一下。你可以通过循环简化这个集合的填充:

var
  Line: string;
begin
  for Line in SQLQueryLines do
    Query.SQL.Add(Line);
end;

或者在旧的Delphi中:

var
  Index: Integer;
begin
  for Index := Low(SQLQueryLines) to High(SQLQueryLines) do
    Query.SQL.Add(SQLQueryLines[Index]);
end;