Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 参数fdquerydelphi不起作用_Sql_Delphi_Parameters - Fatal编程技术网

Sql 参数fdquerydelphi不起作用

Sql 参数fdquerydelphi不起作用,sql,delphi,parameters,Sql,Delphi,Parameters,我有以下delphi代码: FDQuery1.SQL.Clear; FDQuery1.SQL.Add('SELECT * FROM :Tablename'); FDQuery1.ParamByName('Tablename').AsString := 'tasks'; ShowMessage(FDQuery1.sql.Text); FDQuery1.Open; (从这个链接下载:) 它不起作用,因为参数未填充但保持不变。 有人知道为什么它没有被填满吗 因为通常不能在SQL命令中使用参数替换表名

我有以下delphi代码:

FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('SELECT * FROM :Tablename');
FDQuery1.ParamByName('Tablename').AsString := 'tasks';
ShowMessage(FDQuery1.sql.Text);
FDQuery1.Open;
(从这个链接下载:)

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

因为通常不能在SQL命令中使用参数替换表名。不过,您很幸运,FireDAC支持预处理器宏在SQL命令中参数化表名。因此,您可以编写以下示例(请注意,如果您希望看到代码中的命令,则必须在宏预处理之后,即调用之后):


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

,因为通常不能在SQL命令中使用参数替换表名。不过,您很幸运,FireDAC支持预处理器宏在SQL命令中参数化表名。因此,您可以编写以下示例(请注意,如果您希望看到代码中的命令,则必须在宏预处理之后,即调用之后):


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

不能使用参数指定tablename。参数用于列值。啊,好的。谢谢。通常在运行时提供值或需要转义时使用参数。这里有一个文本值,
'tasks'
,它只包含ASCII字符。即使对于列值,也不需要使用参数。不能使用参数指定tablename。参数用于列值。啊,好的。谢谢。通常在运行时提供值或需要转义时使用参数。这里有一个文本值,
'tasks'
,它只包含ASCII字符。即使对于列值,也不需要使用参数。
FDQuery1.SQL.Text := 'SELECT * FROM &TableName';
FDQuery1.MacroByName('TableName').AsIdentifier := 'tasks';
FDQuery1.Open;