SQL Server ストアドでのトランザクション

SQL Server ストアドプロシージャーでのトランザクション

CREATE PROCEDURE [dbo].[stTest1]
   @ID int
AS
Declare
   @Count int

BEGIN
    SET NOCOUNT ON;

BEGIN TRY
    BEGIN TRANSACTION

    SELECT @Count = Count(*) FROM T1
    IF @Count =0
    BEGIN
        ROLLBACK TRANSACTION
        RETURN -1 –戻る
    END

    UPDATE T2 SET a1 = 1 WHERE ID = @ID

    COMMIT TRANSACTION

END TRY

— 例外処理
BEGIN CATCH
    IF XACT_STATE() = -1
    BEGIN
       ROLLBACK TRANSACTION
    END
    IF XACT_STATE() = 1
    BEGIN
       COMMIT TRANSACTION
   END
    RETURN ERROR_NUMBER()
END CATCH

RETURN 0   

END


XACT_STATE() 関数を追加. 2010-10-16

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です