gpt4 book ai didi

sql-server-2008 - 如何捕获SQL Server存储过程中的错误?

转载 作者:行者123 更新时间:2023-12-03 07:46:42 26 4
gpt4 key购买 nike

我需要捕获错误并将其发送到Web应用程序。例如,以下是我的存储过程:

CREATE PROC ADDNAME
(@FirstName VARCHAR(10),
@LastName VARCHAR(10))
AS
BEGIN
BEGIN TRY
BEGIN TRAN
INSERT INTO EMPLOYEE(FirstName, LastName)
VALUES (@FirstName, @LastName)
END TRY
BEGIN CATCH
ROLLBACK TRAN
PRINT @@ERRORMESSAGE
END CATCH
END

在这里,如何捕获错误并将其发送到Web应用程序?通常,哪种方法是处理Web应用程序中存储过程错误的最佳方法?

我正在使用ASP.NET和C#作为前端。我需要你的建议。

最佳答案

首先,您不能在BEGIN CATCH中回滚。并非没有先检查 XACT_STATE() 。除非xact_state()为1,否则无法运行ROLLBACK。考虑一下异常为1205(发生死锁)的情况,在这种情况下,在强制回滚事务后会收到异常。有关混合事务和错误处理的正确模式,请参见Exception handling and nested transactions

其次,您的存储过程不需要按原样进行事务和错误处理。除非实际代码复杂得多,否则您的过程不会增加任何值。

最后,要引发错误,请使用 RAISERROR() 。 SQL Server 2012还具有 THROW

关于sql-server-2008 - 如何捕获SQL Server存储过程中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26728041/

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