SQL-CLR 存储过程不返回值

本文关键字:返回值 存储过程 SQL-CLR | 更新日期: 2023-09-27 18:30:56

我浏览了Stackoverflow,在这里发现了几乎相同的问题。一年前有人问过这个问题,还没有人回答。也许我会比user1038334更幸运,有人会帮助我。

我有一个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 Profiler,捕获查询,然后在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 视窗 NT 6.1 (7601)

  • .Net 版本: v4.0.30319

任何帮助将不胜感激。

SQL-CLR 存储过程不返回值

这是一个

SQL Server 错误,累积更新包 8 修复了此问题。