gpt4 book ai didi

sql - 使用 SQL Server 的 GOTO 进行错误处理是不好的做法吗?

转载 作者:行者123 更新时间:2023-12-02 11:52:08 24 4
gpt4 key购买 nike

我在 this article 中阅读了有关 SQL Server 中的错误处理的信息。 ,并且他们建议在某些情况下使用SQL Server的GOTO来回滚事务。示例:

BEGIN TRAN
UPDATE Authors
SET Phone = '415 354-9866'
WHERE au_id = '724-80-9391'

SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM

UPDATE Publishers
SET city = 'Calcutta', country = 'India'
WHERE pub_id = '9999'

SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM
COMMIT TRAN

PROBLEM:
IF (@intErrorCode <> 0) BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
END

这篇文章是近 10 年前写的,我听说使用 GOTO 通常不是一个好主意。以上是 SQL Server 中错误处理的好方法吗?如果没有,有人可以建议更好的选择吗?

最佳答案

您应该使用Try/Catch在 SQL 2005+ 中

BEGIN TRY
BEGIN TRAN

UPDATE Authors
SET Phone = '415 354-9866'
WHERE au_id = '724-80-9391'

UPDATE Publishers
SET city = 'Calcutta', country = 'India'
WHERE pub_id = '9999'

COMMIT TRAN
END TRY
BEGIN CATCH
PRINT 'Unexpected error occurred!'
IF XACT_STATE() <> 0
ROLLBACK TRAN
END CATCH

关于sql - 使用 SQL Server 的 GOTO 进行错误处理是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11141814/

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