2012-04-13 163 views
0

我看了一下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

任何帮助将不胜感激。

+0

你有什么command.CommandType设置为? – AdaTheDev 2012-04-13 14:36:27

+0

如果您运行[sp_recompile](http://support.microsoft.com/kb/2536225),是否可以重现它? – 2012-04-13 14:40:00

+0

@AdaTheDev:我的命令类型设置为CommandType.StoredProcedure。 – davidoff 2012-04-14 16:17:17

回答