如何执行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”。
答案 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