Hallo,
ich bin am Testen, greife mit Delphi 7 und ZEOS-Komponenten(6.6.6)
auf Firebird (2.0.5.13206) zu.
Meine Test-Stored Procedure:
Code:
Create Procedure MyTest
(I_Par : Integer)
Returns
(R_Wert Integer)
AS
Begin
R_Wert = 2 * I_Par;
End
------------------------------
Unter Delphi:
Delphi-Quellcode:
Cl_Connection := TZConnection.Create(Self);
Cl_Connection.Protocol := 'firebird-2.0';
Cl_Connection.HostName := 'PCTest' ;
Cl_Connection.Database := 'C:\Datenbanken\test_1.gdb';
Cl_Connection.User := 'SYSDBA';
Cl_Connection.Password := 'masterkey';
Cl_StoredProc := TZStoredProc.Create(Self);
With Cl_StoredProc Do
Begin
StoredProcName := 'MyTest';
Params.Clear;
With Params.CreateParam(ftInteger,'I_Par',ptInput) do AsInteger := 0;
With Params.CreateParam(ftInteger,'R_Wert',ptOutput) do AsInteger := 0;
Connection := Cl_Connection;
End;
Cl_Connection.Connect;
----------------------------------------------------
Wert abfragen :
Code:
Delphi-Quellcode:
If Cl_Connection.InTransaction Then
Cl_Connection.Commit;
Cl_Connection.StartTransaction;
With Cl_StoredProc Do
Begin
Params[0].Value := StrToIntDef(Edit1.Text,2);
ExecProc;
Edit2.Text := IntToStr(Params[1].Value) ;
End;
Cl_Connection.Commit;
Cl_StoredProc.Close;
Bei Aufruf execProc kommt dann die
Exception .
Warum ?
Mit Open und FieldByName bekomme ich immer 0.
Wenn ich aber eine SP aufrufe ohne Rückgabewerte funktioniert ExecProc .
Gruß
RalfE