我有以下数组,其中包含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应该对上述作业采取不同的处理方式,而且我没有找到任何搜索网络的帮助。任何人都有这个问题的答案吗?感谢
答案 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;