我有这个存储过程,因为某些原因我不能使用Throw或RAISEERROR
。我不得不说我是SQL Server的新手,我之前从未使用过这个语句,但出于某种原因,当我输入它们时不会变成蓝色。
ALTER PROCEDURE [dbo].[del_pay_plan_proc]
@id INT
AS
BEGIN TRANSACTION
BEGIN TRY
DELETE FROM test_table WHERE [Id] = @id;
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
THROW
END CATCH
我使用的是SQL Server 2008 R2。
我无法调用函数RAISEERROR
或使用THROW
语句的原因是什么?
提前致谢!
答案 0 :(得分:0)
根据我的理解,它应该如下......
ALTER PROCEDURE [dbo].[del_pay_plan_proc]
@id INT
AS
Begin Try
SET NOCOUNT ON
SET XACT_ABORT ON
Begin Tran
DELETE FROM test_table WHERE [Id] = @id;
Select '' Msg
Commit Tran
End Try
Begin Catch
RollBack Tran
Select Error_Message() as Msg
End Catch
通过这样做,如果发生错误,则不需要抛出任何异常。如果发生任何错误,控制将自动在Catch块内移动。
<强> Reference from here 强>