RETURNING 句の統一サポート(FireDAC)

提供: RAD Studio
移動先: 案内検索

コマンド テキストのプリプロセス(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)