2009-08-06 2 views
7

Я хочу программно создать SQLDataSet в Delphi и использовать его для выполнения хранимой процедуры и получения значения выходного параметра. Выглядит легко, но я не могу заставить его работать.Delphi: Как получить значение выходного параметра хранимой процедуры?

Вот немая хранимая процедура в SQL Server:

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

Теперь вот один из вариантов, которые я пытался и не работал:

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; 

Я думал, что это будет легко , но есть около registredbugs вокруг этой проблемы.

ответ

7

Похоже, это работает, если вы установите CommandType и SchemaName и не создают 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; 

Смежные вопросы