Hi
DP!
Ich hab hier ne StoredProcedure in meiner FireBird-Table. Die funzt auch super. Nun möchte ich sie über ZEOS aus Delphi ansprechen, mache ich das so:
Delphi-Quellcode:
StoredProc.Close;
StoredProc.ParamByName('VName').Value := 'Sadelfeld';
StoredProc.ParamByName('VVorname').Value := 'Hermann';
StoredProc.Open;
showMessage(IntToStr(StoredProc.paramByName('VLfdNr').asInteger));
Wird mir als VLfdNr (Rückgabewert eines AutoInc per Generator)
immer 0 ausgegeben, obwohl ich im DBGrid sehen kann das es nicht stimmt.
Nutze ich diese Variante
Delphi-Quellcode:
StoredProc.Close;
StoredProc.ParamByName('VName').Value := 'Sadelfeld';
StoredProc.ParamByName('VVorname').Value := 'Hermann';
StoredProc.ExecProc;
showMessage(IntToStr(StoredProc.paramByName('VLfdNr').asInteger));
bekomme ich ab dem zweiten Aufruf die Fehlermeldung, dass die Paramter nicht stimmen. Zusätzlich gibts ne
Exception beim Trennen der Verbindung. Ist ja auch logisch, AFAIK ist ExecProc ja auch nicht für Ergebnismengen gedacht.
ABER auf diese Weise zeigt er mir den richtigen Wert für VLFdNr an
Kennt jemand ne Lösung für mein Problem? Muss ich bei der ersten Variante anders auf den Rückgabeparameter zugreifen?
Schönen Gruß,
Thomas
P.S.: Sobald das klappt, nerv ich euch erstmal nicht mehr mit ZEOS+embedded Firebird. Dann muss ich erstmal die Grundfunktionen des eigentlich Progs basteln, und das krieg ich hin