例如,假设我在proc3
...。我想知道它是否是由proc1
或proc2
...
如果这对你的逻辑很重要,我将使用一个额外的输入参数来指定源。
这也将使数据库更容易移植到另一个平台,因为不依赖于某个模糊的平台相关函数。
需要在运行时知道哪种情况会导致错误,还是只需要在调试时知道呢?
你可以用SQLServer分析器如果您只需要在调试/监视期间执行此操作。
否则,在2005,我不相信你有能力堆栈跟踪。
要解决这个问题,可以添加额外的参数到proc 3,@CallingProc或类似的东西中。
或者,可以将TRY CATCH块添加到proc1和proc 2中。
BEGIN TRY
EXEC Proc3
END TRY
BEGIN CATCH
SELECT 'Error Caught'
SELECT
ERROR_PROCEDURE()
END CATCH
不过,SQLServer 2008确实能够通过过程进行调试。