Morgen,
ich rätsel hier ein wenig herum wie ich am besten mit einer TIBStoredProc umgehe, um mit dieser beliebige Proceduren auf dem
SQL Server zu starten.
Wenn ich eine TBIStoredProc für mehrere Proceduren benutzen möchte, dann muss ich mich wahrscheinlich darum kümmern das die Parameter gelöscht und neu erstellt werden.
Dies wollte ich auch tun, aber mir ist noch nicht ganz klar wie ich die Parameter wieder heraus gelöscht bekomme.
Delphi-Quellcode:
d.storedProc.StoredProcName:='NEXTFREELIEFNUMBER';
for i:=0 to d.storedProc.Params.count -1 do d.storedProc.Params.items[i].Destroy; // Bringt beim zweiten mal einen Fehler
with d.storedProc.Params.CreateParam(ftstring, 'lBound', ptInput) do asstring := '000';
with d.storedProc.Params.CreateParam(ftstring, 'uBound', ptInput) do asstring := '999';
d.storedProc.Params.CreateParam(ftInteger, 'A_RETURN', ptOutput);
try
d.storedProc.Prepare;
d.storedProc.ExecProc;
finally
d.storedProc.unprepare;
end;
dbedit1.Text:=format('%*d',[3,d.storedProc.ParamByName('A_RETURN').Asinteger]);
Laut params.count sind 3 Parameter vorhanden, was auch korrekt ist. Aber bei #2 meckert er, dass der Index ausserhalb des gültigen Bereiches sei.
Mit einer try except Anweisung wie es in einem der Delphi Example gelöst ist funktioniert der Auftruf der Procedure. Allerdings halte ich das für schlecht gelöst. Auch fraglich ob ich dann eine andere Procedure aufrufen kann, da falsche Parameter in der ParamListe vorhanden sein könnten.
Wie geht ihr mit den StoredProcs Komponenten um. Eine für jede Procedure oder eine für alle Proceduren?