Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Variables Handling mit TIBStoredProc (https://www.delphipraxis.net/75605-variables-handling-mit-tibstoredproc.html)

Sven Janssen 22. Aug 2006 09:50

Datenbank: Interbase • Version: 6.0 • Zugriff über: TIB etc

Variables Handling mit TIBStoredProc
 
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?

mkinzler 22. Aug 2006 09:55

Re: Variables Handling mit TIBStoredProc
 
Bei selectable SPs kann man auch eine normale Query-Komponente verwenden. Bei dieser wird bei Änderung des Abfragestrings die Parameter automatisch zurückgesetzt.

TBx 22. Aug 2006 09:56

Re: Variables Handling mit TIBStoredProc
 
Hallo!

Laß Deine Schleife mal in umgekehrter Richtung laufen .
Wenn DU bei I=2 angekommen bist, hast Du items[2] schon nicht mehr. der ist nämlich inzwischen items [0], da DU die anderen bereits gelöscht hast.

Hope it helps

onlinekater

Sven Janssen 22. Aug 2006 10:02

Re: Variables Handling mit TIBStoredProc
 
aua ... ist ja schon fast peinlich ;) Klar sollte man immer von hinten nach vorne löschen


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz