我有以下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)
它不起作用,因为参数未填充但保持不变。
有人知道为什么它没有填充吗?
最佳答案
因为通常不能在SQL命令中使用参数来替换表名。不过,您在这里很幸运,FireDAC支持预处理程序宏以参数化SQL命令中的表名。因此,您可以编写以下示例(请注意,如果要像在代码中一样查看命令,则该命令必须在宏预处理之后,例如,在调用Prepare之后):
FDQuery1.SQL.Text := 'SELECT * FROM &TableName';
FDQuery1.MacroByName('TableName').AsIdentifier := 'tasks';
FDQuery1.Open;
有关此类宏的详细信息,请参见substitution variables主题。
关于sql - 参数FDquery delphi不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44279418/