参数FDquery delphi不起作用

时间:2017-05-31 08:23:27

标签: sql delphi parameters

我有以下delphi代码:

FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('SELECT * FROM :Tablename');
FDQuery1.ParamByName('Tablename').AsString := 'tasks';
ShowMessage(FDQuery1.sql.Text);
FDQuery1.Open;

(从这个链接:http://www.delphigroups.info/2/da/237634.html

它不起作用,因为参数未填充但保持不变。 有人知道为什么没有填补?

1 个答案:

答案 0 :(得分:5)

因为通常不能在SQL命令中使用参数来替换表名。你很幸运,FireDAC支持预处理器宏来参数化SQL命令中的表名。所以你可以这样编写(请注意,如果你想在代码中看到命令,那么它必须在宏预处理之后,例如在调用Prepare之后):

FDQuery1.SQL.Text := 'SELECT * FROM &TableName';
FDQuery1.MacroByName('TableName').AsIdentifier := 'tasks';
FDQuery1.Open;

有关此类宏的详细信息,请参阅substitution variables主题。