Firebird TIBQuery-Einsatz mit der Rückkehr IN ...

Ich habe eine firebird 2.x-Datenbank mit Generator und einen trigger, um den Schlüssel zu generieren-Feld.
Ich brauche, um den zurückgegebenen Wert aus folgenden Abfrage.

INSERT INTO XXXX (vdate,description) values ('"+ VDate +"','"+ Description +"') returning vno INTO :ParamVoucherNo

Ich habe versucht, mehrere Versionen der code unten, aber es nicht wrok und ich bekomme

Dynamic sql error sql error code = -104

Ist es wirklich möglich, den Rückgabewert in delphi mit TIBQuery ?

Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO XXXX (vodate,description) values ('"+ VDate +"','"+ Description +"') returning vno INTO :ParamVoucherNo");

Query1->Params->ParamByName("ParamVoucherno")->ParamType = ptResult;
Query1->Params->ParamByName("ParamVoucherno")->DataType = ftInteger;
Query1->Params->ParamByName("ParamVoucherno")->Value = "";
Query1->Prepare();
Query1->ExecSQL();

Irgendwelche Vorschläge?

  • Ich bin rusty auf der TADO, aber ich glaube, Sie haben die Möglichkeit auf eine Rendite Wert einfügen (ich nehme an, auto-increment) aus der Datenbank. Es sollte eine option auf die TADOQuery oder die TADOConnection-Objekte, um den Rückgabewert einer auto-increment. Ich bin nicht up-to-Geschwindigkeit auf firebird, aber das erfordert den Treiber realisieren die option. Die andere Möglichkeit ist folgende es mit einem SELECT MAX(ID) FROM Tabelle", aber das führt zu concurrency-Fehler und sollte vermieden werden.
InformationsquelleAutor topmop75 | 2011-09-27
Schreibe einen Kommentar