2009-08-19 4 views
1

Как выполнить SP и получить возвращаемое значение. В приведенном ниже коде всегда возвращается нулевой объект. Хранимая процедура была протестирована в базе данных с использованием тех же параметров, что и в коде, но SubSonic sp всегда возвращает значение null. Когда выполняется в db через sql, он возвращает правильные значения.Как выполнить SubSonic3 StoredProcedure с возвращаемым значением

Использование SubSonic 3.0.0.3.

myDB db = new myDB(); 
StoredProcedure sp = db.GetReturnValue(myParameterValue); 
sp.Execute(); 
int? myReturnValue = (int?)sp.Output; 

В приведенном выше коде sp.Output всегда имеет значение null. При выполнении в базе данных возвращаемая переменная является допустимым целым числом (0 или выше) и никогда не является нулевым.

хранимой процедура коды ниже:

CREATE PROCEDURE [dbo].[GetReturnValue]  
    @myVariable varchar(50) 
AS 
    declare @myReturn int 
BEGIN 
    set @myReturn = 5; 
    return @myReturn; 
END 

При выполнении хранимой процедуры в SQL Server, возвращаемое значение '5'.

+1

Можете ли вы разместить sql из sproc? –

+1

Добавлен хранимый код proc на вопрос выше. –

ответ

3

Я скопировал ваш sproc и прошел через код SubSonic и. Выход никогда не установлен нигде. Работа вокруг будет использовать выходной параметр и ссылаться на него после выполнения: sproc.OutputValues ​​[0];

0
CREATE PROCEDURE [dbo].[GetReturnValue]  
    @myVariable varchar(50) 
    @myReturn BIGINT OUTPUT 
AS 
    declare @myReturn int 
BEGIN 
    set @myReturn = 5; 
    return @myReturn; 
END 
1

Вот простой способ сделать это:

В хранимой процедуре, вместо того, чтобы использовать RETURN, используйте ВЫБРАТЬ так:

SELECT @@ROWCOUNT 

или

SELECT @TheIntegerIWantToReturn 

Тогда в использовании кода:

StoredProcName.ExecuteScalar() 

Это вернет единственное целое число, которое вы выбрали в хранимой процедуре.

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