gpt4 book ai didi

delphi - 使用带有用于 firebird 的anydac(现在是firedac)脚本的参数时出现错误

转载 作者:行者123 更新时间:2023-12-03 15:49:45 24 4
gpt4 key购买 nike

我无法正确执行以下脚本。它在 delphi 中针对 firebird 数据库运行。

var
vScript: TADScript;

begin
vScript := TADScript.Create(nil);
vScript.Connection := xConnection;
vScript.Transaction := xTransaction;

with vScript.Params.Add do
begin
Name := 'DEFVAL'; // also tried ':DEFVAL'
AsInteger := 1;
end;

with vScript.SQLScripts.Add do
SQL.Text := 'ALTER TABLE "PERSON" add "AGE" INTEGER DEFAULT :DEFVAL';

vScript.ValidateAll;
vScript.ExecuteAll;
end

它给出了“ token 未知 - 第 1 行,第 48 列”的错误,参数 (:DEFVAL) 位置

我尝试先分配 sql 文本,然后调用 Params.FindParam,但它不在列表中。这适用于查询。

不使用参数而仅在 SQL 字符串中包含默认值是可行的,但此代码用作更大框架的一部分,该选项是最后的手段。

最佳答案

您收到 token 未知错误的原因是 ALTER TABLE 语句不允许以这种方式使用参数。

您需要将字符串化的默认值连接到ALTER TABLE 语句。由于在这种情况下您的代码无条件应用默认值 1,因此可以简单地将其包含在语句文字中:

with vScript.SQLScripts.Add do
SQL.Text := 'ALTER TABLE "PERSON" add "AGE" INTEGER DEFAULT 1';

如果您确实需要适应潜在可变的默认值,那么显然这需要更改为类似于以下内容的内容:

with vScript.SQLScripts.Add do
SQL.Text := Format('ALTER TABLE "PERSON" add "AGE" INTEGER DEFAULT %i', [iDefaultValue]);

其中iDefaultValue是一些保存所需默认值的整数变量。

关于delphi - 使用带有用于 firebird 的anydac(现在是firedac)脚本的参数时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40368244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com