gpt4 book ai didi

sql-server-2005 - T-SQL 中的 TRY CATCH block

转载 作者:行者123 更新时间:2023-12-04 07:07:04 25 4
gpt4 key购买 nike

我遇到了一个存储过程,它在尝试更新后立即具有以下错误处理块。以下是 SP 的最后几行。

这样做有什么好处吗?在我看来,这段代码似乎只是在重新抛出它在没有添加任何值的情况下捕获的相同错误,并且如果完全省略 Try 块,代码的行为可能会 100% 相同。

如果省略 TRY 块,结果 SP 的行为是否会有任何差异?

BEGIN CATCH

SELECT @ErrMsg = ERROR_MESSAGE(), @ErrSev = ERROR_SEVERITY(), @ErrState = ERROR_STATE()
RAISERROR (@ErrMsg, @ErrSev, @ErrState)

END CATCH

最佳答案

我们在存储过程中通常做的就是像这样写catch块

BEGIN CATCH
DECLARE @i_intErrorNo int
DECLARE @i_strErrorMsg nvarchar(1000)
DECLARE @i_strErrorProc nvarchar(1000)
DECLARE @i_intErrorLine int

SELECT @i_intErrorNo=Error_Number()
SELECT @i_strErrorMsg=Error_Message()
SELECT @i_strErrorProc=Error_Procedure()
SELECT @i_intErrorLine=Error_Line()

INSERT INTO error table ////// Insert statement.

END CATCH

这是我们用来存储错误的东西。为了向用户发送正确的消息,我总是使用存储过程的输出参数来显示错误的详细/必需原因。

关于sql-server-2005 - T-SQL 中的 TRY CATCH block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4993422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com