我查看了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
非常感谢任何帮助。