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