如何使用返回值执行SubSonic存储过程

时间:2009-08-19 17:55:13

标签: stored-procedures subsonic subsonic3

如何执行SP并获取返回值。以下代码始终返回null对象。已使用与代码中相同的参数在数据库中测试存储过程,但SubSonic sp始终返回null。通过sql在db中执行时,它返回正确的值。

这是使用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”。

3 个答案:

答案 0 :(得分:3)

我复制了你的sproc并逐步完成了SubSonic代码.Output永远不会在任何地方设置。解决方法是使用输出参数并在执行后引用它:sproc.OutputValues [0];

答案 1 :(得分:1)

这是一个简单的方法:

在存储过程中,不要使用RETURN,而是像这样使用SELECT:

SELECT @@ROWCOUNT 

SELECT @TheIntegerIWantToReturn

然后在代码中使用:

StoredProcName.ExecuteScalar()

这将返回存储过程中SELECTED的单个整数。

答案 2 :(得分:0)

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