我看了一下Stackoverflow,发现几乎相同的question here。一年前有人问到,没有人回答。也许我会比user1038334更幸运,有人会帮助我。SQL-CLR存储过程不返回值
我有一个SQL CLR存储过程,可以正常工作几天,直到发生奇怪的事情。我存储的proc更新表并作为结果代码返回一个值。所以通过查看这个值,我可以决定是否出现了问题。问题在于接收这个结果值。 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的开发版(64位) - v.10.50.1765.0
主机操作系统版本:微软的Windows NT 6.1(7601)
的.Net版本:v4.0.30319
任何帮助将不胜感激。
你有什么command.CommandType设置为? – AdaTheDev 2012-04-13 14:36:27
如果您运行[sp_recompile](http://support.microsoft.com/kb/2536225),是否可以重现它? – 2012-04-13 14:40:00
@AdaTheDev:我的命令类型设置为CommandType.StoredProcedure。 – davidoff 2012-04-14 16:17:17