Sql Server 2005 error handling - inner exception在 C# 中,您可以获取原始错误并使用传递的内部异常跟踪执行路径(堆栈跟踪)。我想知道当嵌套 2 或 3 级深度的存储过程中发生错误时,如何使用 sql server 2005 中的错误处理 try/catch 来实现这一点。 我希望像 ERROR_MESSAGE()、ERROR_LINE()、ERROR_PROCEDURE()、ERROR_SEVERITY() 这样的函数可以轻松地向上传递,以便顶级存储过程可以访问它们。 处理此问题的最佳方法是使用 OUTPUT 参数和 XML。下面的示例代码将演示如何以及您可以修改在 TopProcedure 中对 XML 执行的操作,以更好地处理您对错误的响应。
对 TopProcedure 的初始调用将返回 25。第二次将返回一个如下所示的 XML 块:
享受 您可以这样做的一种方法是创建一个内存表,并在捕获异常时将行插入其中。然后您将重新引发异常,链上的下一个函数将有机会处理异常或还将异常记录到内存表中。这很讨厌,但不幸的是似乎没有办法获取 T-SQL 调用堆栈:( |