3

我正在使用 TQuery 将记录插入表中。下面是代码。

with qryABC do
    begin
      Close;
      SQL.Clear;
      SQL.Text := 'INSERT INTO tableXYZ (ID) values (:ID)';
      ParamByName('ID').Value := AnyID;
      ExecSQL;
      Close;
    end;

当我从 oracle 触发相同的查询时,查询会被触发,但是当我尝试从 delphi xe2 触发查询时会出现异常。在调试时,我发现上面代码中的“ExecSQL”语句出现错误。例外是:EDBEngineError - 操作不适用

我用谷歌搜索但没有结果。请帮忙。

4

1 回答 1

2

是什么AnyID?像这样的问题更好地显示数据类型声明和分配的值。

作为一般建议 - 不要使用.Value, tryParamByName('ID').AsIntegerParamByName('ID').AsString你实际需要的某个参数。

这不仅会更快,而且还可以通过编译时类型检查生成更确定的代码,而不是明显更慢且更不可预测的运行时动态Variant数据类型转换。

Fields这也适用于Parameters.

于 2012-12-04T10:08:00.750 回答