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

提供: Appmethod Topics
移動先: 案内検索

コマンド テキストのプリプロセス(FireDAC) への移動


目次

説明

FireDAC には、{INTO} エスケープ シーケンスが提供されており、Firebird、Oracle、PostgreSQL を対象に RETURNING 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; // INTO にリストされている、最初のパラメータの値

{INTO} 内のパラメータは ptInputOutput として定義されます。 FireDAC では、RETURNING {INTO} を INSERT/UPDATE SQL コマンドの一部として使用します。このコマンドは、更新をデータベースにポストするために自動生成されるものです。

メモ: FireDAC では Firebird の INTO 句を直接にはサポートできません。それをサポートしているのが、FireDAC で使用している DSQL ではなく PSQL だけだからです。 一方、{INTO} エスケープ句を使用することはできます。 Firebird での他のオプションは、Open メソッドを ExecSQL の代わりに使用します:
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; // RETURNING にリストされている、最初のフィールドの値