【发布时间】:2022-01-20 11:41:22
【问题描述】:
早上好。
我遇到了一个我无法解决的问题。情况如下: 我有一个过程,我称之为传递一个字符串,这基本上是一个表的名称。 在这种特殊情况下,它是“sys”。
这个过程基本上执行了以下几行:
Query.Close ();
Query.ParamByName ('TABLE'). AsString: = Table;
Query.Open;
“查询”基本上是这样的:
SELECT * FROM: TABLE;
因此您应该运行以下命令:
SELECT * FROM sys;
真相?
好吧,显然我遇到了错误。因为在测试它并执行我的程序时会发生这种情况:
[FireDAC] [Phys] [SQLite] ERROR: near ": TABLE:" syntax error.
** SQLite 对参数的工作方式是否不同? ** 我找不到失败的原因。
【问题讨论】:
-
参数只能用于值,不能用于任何标识符或 SQL 关键字。这适用于所有 SQL 方言。
:也需要位于参数名称的开头。所以SELECT * FROM PEOPLE WHERE FIRSTNAME = :FNAME有一个参数叫FNAME。 -
Firedac 确实有可以用于任何事情的宏。在将它们发送到数据库之前,对它们进行评估并更新 SQL。