我正在尝试获取存储过程的返回值。以下是此类存储过程的示例:
select
Name,
IsEnabled
from
dbo.something
where
ID = @ID
if @@rowcount = 0
return 1
return
这是一个简单的选择。如果找到 0 行,我的结果集将为空,但我仍然会有一个返回值。
这是一个不好的例子,因为这是一个选择,所以我确信我可以找到是否返回了 0 行。但是,在插入、删除或其他调用中,我们需要此返回值来了解是否存在问题。我一直找不到获得这个返回值的方法。我可以获得输出值,可以获得结果集,但没有返回值。
如果我手动调用 SQL,或者即使我运行一个,我也可以获得返回值SqlCommand
使用实体框架,但这不是我想要做的。
有没有人曾经能够使用实体框架从存储过程中获取返回值?
谢谢您的帮助!
我想存储过程返回值的支持取决于实体框架的版本。虽然直接返回值对我来说不起作用,但我设法使用 OUTPUT 存储过程参数获取值。例子:
USE [YOUR_DB_NAME]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TestReturnValue]
@InputValue int = 0,
@Result int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @Result = @InputValue
RETURN(@InputValue);
END
这是测试代码:
void TestReturnValue()
{
using (var db = new YourDBContext())
{
var result = new System.Data.Objects.ObjectParameter("Result", 0);
Console.WriteLine("SP returned {0}", db.TestReturnValue(123, result));
Console.WriteLine("Output param {0}", result.Value);
}
}
这是输出:
SP returned -1
Output param 123
正如您所看到的,直接返回值输出一些垃圾,但 OUTPUT 参数有效!
本文提供了有关从 SP 返回值的两种方法的一般信息 http://msdn.microsoft.com/en-us/library/ms188655.aspx
希望这可以帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)