Eine bessere Möglichkeit, Parameter an ein TADOStoredProc zu übergeben (Delphi)

8

Ich muss eine große Anzahl von SQL-Abfragen in gespeicherte Prozeduren konvertieren. Ich habe Code, der ungefähr 20 oder 30 Werte gleichzeitig in einer Delphi-Prozedur aktualisiert. Ich kann mit dem Erstellen von gespeicherten Prozeduren umgehen, um so etwas zu tun. Das Problem ist, dass meine Art, Parameter an gespeicherte Prozeduren zu übergeben, sehr umfangreich ist:

%Vor%

Ich bin mir auch nicht sicher, ob das einen Speicherverlust verursacht (ist es notwendig, solche TParameter-Objekte zu befreien?)

Jeder hat eine bessere Möglichkeit, eine große Anzahl von Parametern zu handhaben? (Ich kann keine neue Bibliothek verwenden. Ich muss ADO verwenden, und die SQL, die ich verwende, ist MSSQL) (auch verwende ich ADO.net NICHT)

    
Earlz 21.07.2009, 14:17
quelle

4 Antworten

11

Dies führt nicht zu einem Speicherverlust. stored_procedure wird seine Parameter bereinigen. Sie können dies mit FastMM bestätigen, indem Sie Ihrem .dpr Folgendes hinzufügen:

%Vor%

Zuerst würde ich die "mit" Aussage loswerden. Es kann zu mehr Problemen und weniger lesbarem Code führen.

Ich würde eine Hilfsmethode erstellen, die eine gespeicherte Prozedur, einen Parameternamen und einen Parameterwert akzeptiert, wodurch Ihr Code leichter zu verwalten ist.

%Vor%     
Bruce McGee 21.07.2009, 14:40
quelle
19

Es gibt eine akzeptierte Antwort :-), aber ich möchte Sie auf einen einfacheren und einfacheren Weg hinweisen, die Parameter mit einer Zeile zu definieren und zu verwenden:

%Vor%

Es ist einfach und flexibel, weil Sie die Eingabe- und Ausgabeparameter mit derselben Zeile definieren können.

und aus Delphi help:

%Vor%     
Mohammed Nasman 21.07.2009 15:08
quelle
10

ADO erstellt die Parameter für Sie, Sie müssen nur Refresh für das Parameter-Objekt aufrufen:

%Vor%

usw.

Wenn irgendwelche Parameter ausgegeben werden, müssen Sie sie explizit einstellen:

%Vor%     
Gerry Coll 21.07.2009 21:30
quelle
0

Dies ist der kürzeste, den ich kenne:

%Vor%

Beachten Sie, dass Sie stored_procedure.Connection zuweisen und stored_procedure.Parameters.Refresh; aufrufen müssen, bevor Sie dies tun

    
sav 15.12.2014 05:49
quelle