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でください、試してみてください。ParamByName('ID').AsIntegerまたはParamByName('ID').AsString、特定のパラメータが実際に必要なものを使用しないでください。

これは高速であるだけでなく、コンパイル時の型チェックを使用して、実行時の動的Variantデータ型の変換が大幅に遅くなり、予測がはるかに難しくなるのではなく、より確定的なコードを生成します。

Fieldsこれは、にも当てはまりますParameters

于 2012-12-04T10:08:00.750 に答える