Einheitliche Unterstützung für RETURNING (FireDAC)

Aus RAD Studio

Nach oben zu Vorverarbeiten von Anweisungstext (FireDAC)


Beschreibung

FireDAC beinhaltet die Escape-Sequenz {INTO } zum Vereinfachen und Vereinheitlichen der RETURNING-Behandlung für Firebird, Oracle und PostgreSQL:

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

Die Parameter in {INTO } sind als ptInputOutput definiert. FireDAC verwendet RETURNING {INTO} als Teil der SQL-Anweisungen INSERT/UPDATE, die zum Eintragen von Aktualisierungen in eine Datenbank automatisch generiert werden.

Hinweis: FireDAC kann die INTO-Klausel von Firebird nicht direkt unterstützen, weil diese nur von PSQL, aber nicht von DSQL, was von FireDAC verwendet wird, unterstützt wird. Sie können jedoch die Escape-Klausel {INTO } verwenden. Eine weitere Option für Firebird wäre die Verwendung der Methode Open anstatt von ExecSQL, wie im folgenden Beispiel gezeigt.
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
Hinweis: FireDAC unterstützt die Escape-Sequenz {INTO } für Microsoft SQL Server, aber mit einer geringfügig anderen Syntax:
insert into MyTab (f1) output inserted.f2 {into :p2} values (:p1)