FireDAC无法识别查询参数

问题描述:

我有以下的数组保存SQL语句的行:FireDAC无法识别查询参数

SQLQueryLines : array [00..04] of string = 
     ('select "Costumer"."Name", ', 
       '"Costumer"."Age", ', 
       '"Costumer"."Gender" ' 
     'from  "Costumer" ' 
     'where "Costumer"."Name" = :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]); 

但FireDAC未能识别参数“aCostumerName”。

然而,它承认该参数如果我直接分配:

 Query.SQL.Add ('select "Costumer"."Name", '); 
     Query.SQL.Add (  '"Costumer"."Age", ',); 
     Query.SQL.Add (  '"Costumer"."Gender" '); 
     Query.SQL.Add ('from "Costumer" '); 
     Query.SQL.Add ('where "Costumer"."Name" = :aCostumerName'); 

查询是TFDQuery。

我不明白为什么FireDAC应该处理不同的上述任务,我没有找到任何帮助搜索Web。任何人都有这个问题的答案?谢谢

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

Btw。您可以简化填补这一集合与循环:

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

还是中老年德尔福这样的:

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

嗨Victoria.Appreciated您的评论。这个问题是前段时间发布的。事实上,我发现并纠正了流量,但说实话,我不记得它是什么。总之,谢谢你的帮助。 – user2383818

+0

@ user2383818,绝对不是与从常量数组​​填充SQL查询字符串列表集合和字符串常量之间的差异相关的东西:) – Victoria