0

我有这个存储过程,我不能使用 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语句的原因是什么?

提前致谢!

4

1 回答 1

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 块内移动。


从这里参考

于 2012-07-04T15:43:54.053 回答