0

このストアドプロシージャがあり、ThrowまたはRAISEERROR何らかの理由で使用できません。私はSQLServerの初心者であると言わざるを得ません。これまでこのステートメントを使用したことはありませんが、何らかの理由で入力しても青色になりません。

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 Server2008R2を使用しています。

関数を呼び出したり、ステートメントを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 に答える