RETURNING 句の統一サポート(FireDAC)
コマンド テキストのプリプロセス(FireDAC) への移動
目次
説明
FireDAC には、{INTO }
エスケープ シーケンスが提供されており、Firebird、Oracle、PostgreSQL を対象に RETURNING
句の処理を簡素化および統一します:
FDQuery1.SQL.Text := 'insert into MyTab (f2, f3) values (:f2, :f3) returning f1 {into :f1}';
FDQuery1.Params[0].AsString := 'qwe';
FDQuery1.Params[1].AsInteger := 100;
FDQuery1.ExecSQL;
FDQuery1.Params[2].Value; // Value of a first parameter, listed in INTO
{INTO }
内のパラメータは ptInputOutput として定義されます。 FireDAC では、RETURNING {INTO}
を INSERT/UPDATE SQL コマンドの一部として使用します。このコマンドは、更新をデータベースにポストするために自動生成されるものです: c
メモ: FireDAC では Firebird の
INTO
句を直接にはサポートできません。この句は PSQL でのみサポートされており、FireDAQ で使用している DSQL ではサポートされていないからです。 しかしながら、{INTO }
エスケープ句を使用することはできます。 Firebird での他の手段としては、以下の例のように、ExecSQL の代わりに Open メソッドを利用します。FDQuery1.SQL.Text := 'insert into MyTab (f2, f3) values (:f2, :f3) returning f1';
FDQuery1.Params[0].AsString := 'qwe';
FDQuery1.Params[1].AsInteger := 100;
FDQuery1.Open;
FDQuery1.Fields[0].Value; // Value of a first field, listed in RETURNING
メモ: FireDAC は、
{INTO }
エスケープシーケンスを Microsoft SQL サーバーでサポートいますが、構文がやや異なります: insert into MyTab (f1) output inserted.f2 {into :p2} values (:p1)