2009-08-06 3 views
7

Ich möchte ein SQLDataSet in Delphi programmatisch erstellen und damit eine Stored Procedure ausführen und den Wert eines Ausgabeparameters abrufen. Sieht einfach aus, aber ich kann es nicht funktionieren lassen.Delphi: Wie erhalten Sie den Wert eines Ausgabeparameters einer gespeicherten Prozedur?

Hier ist eine stumme gespeicherte Prozedur in SQL Server:

CREATE PROCEDURE [dbo].getValue @x INT OUTPUT 
AS 
BEGIN 
    SET @x = 10; 
END 

hier nun eine der Varianten ist, dass ich versuche und habe nicht funktioniert:

proc := TSQLDataSet.Create(nil); 
proc.SQLConnection := DefaultConnection; 
proc.CommandText := 'getValue'; 
proc.Params.CreateParam(ftInteger, '@x', ptOutput); 
proc.Params.ParamByName('@x').Value := 0; 
proc.ExecSQL(False); 
value := newIdProc.Params.ParamByName('@x').AsInteger; 

Ich dachte, es wäre einfach , aber es gibt einige registredbugs um dieses Problem.

Antwort

7

Sieht aus wie es funktioniert, wenn Sie die Commandtype und Schema gesetzt und schaffen nicht die Param:


proc := TSQLDataSet.Create(nil); 
proc.SQLConnection := DefaultConnection; 

proc.CommandType := ctStoredProc; 
proc.SchemaName := 'dbo'; 
proc.CommandText := 'getValue'; 

proc.ExecSQL(False); 

value := proc.Params.ParamByName('@x').AsInteger; 

Verwandte Themen