SQL-CLR存储过程不返回值

时间:2012-04-13 14:28:31

标签: c# sql-server-2008-r2 sqlclr clrstoredprocedure

我查看了Stackoverflow,发现几乎相同的question here。一年前有人问过,但没有人回答。也许我会比user1038334更幸运,有人会帮助我。

我有一个SQL CLR存储过程可以正常工作几天,直到出现奇怪的事情。我的存储过程更新表并返回一个值作为结果代码。因此,通过查看此值,我可以决定是否出现了问题。问题在于接收此结果值。 C#代码在接收返回值时抛出异常。

var returnValue = new SqlParameter {Direction = ParameterDirection.ReturnValue};
command.Parameters.Add(returnValue);

connection.Open();
command.ExecuteNonQuery();

return (int)returnValue.Value; //<-- here is an exception

最有趣的是,如果我连接SQL事件探查器,捕获查询然后在SQL Server Management Studio中执行此查询我仍然可以获得结果值而没有任何问题:

DECLARE @RC INT
EXECUTE @RC = MyClrStoreProc
SELECT @RC

重新发布CLR程序集或重新启动SQL Server后,一切都会得到修复。

我很确定应该有这种奇怪行为的原因,但我找不到。

  • SQL Server版本:Microsoft SQL Server Developer Edition(64位) - v.10.50.1765.0

  • 主机操作系统版本:Microsoft Windows NT 6.1(7601)

  • .Net版本:v4.0.30319

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这是一个SQL Server错误,Cumulative Update package 8解决了这个问题。