Sqlserver 存储过程中使用事务

 

  
    
-- 方式一
if exists ( select * from dbo.sysobjects where id = object_id (N ' [dbo].[USP_ProcedureWithTransaction_Demo] ' ) and OBJECTPROPERTY (id, N ' IsProcedure ' ) = 1 )
drop procedure [ dbo ] . [ USP_ProcedureWithTransaction_Demo ]
GO
-- =============================================
--
Author: <ChengXiaoming>
--
Create date: <2010-06-11>
--
Description: <Demo:存储过程中使用事务>
--
=============================================
Create PROCEDURE [ dbo ] . [ USP_ProcedureWithTransaction_Demo ]
As
Begin
SET XACT_ABORT ON
Begin Transaction
Insert Into Lock(LockTypeID) Values ( ' A ' ) -- 此语句将出错,LockTypeID为Int类型
Update Lock Set LockTypeID = 2 Where LockID = 32
Commit Transaction
SET XACT_ABORT OFF
End
GO

-- 方式二
if exists ( select * from dbo.sysobjects where id = object_id (N ' [dbo].[USP_ProcedureWithTransaction_Demo] ' ) and OBJECTPROPERTY (id, N ' IsProcedure ' ) = 1 )
drop procedure [ dbo ] . [ USP_ProcedureWithTransaction_Demo ]
GO
-- =============================================
--
Author: <ChengXiaoming>
--
Create date: <2010-06-11>
--
Description: <Demo:存储过程中使用事务>
--
=============================================
Create PROCEDURE [ dbo ] . [ USP_ProcedureWithTransaction_Demo ]
As
Begin
Begin Transaction
Insert Into Lock(LockTypeID) Values ( ' A ' ) -- 此语句将出错,LockTypeID为Int类型
Update Lock Set LockTypeID = 1 Where LockID = 32
Commit Transaction
If ( @@ERROR <> 0 )
Rollback Transaction
End
GO

-- 方式三
if exists ( select * from dbo.sysobjects where id = object_id (N ' [dbo].[USP_ProcedureWithTransaction_Demo] ' ) and OBJECTPROPERTY (id, N ' IsProcedure ' ) = 1 )
drop procedure [ dbo ] . [ USP_ProcedureWithTransaction_Demo ]
GO
-- =============================================
--
Author: <ChengXiaoming>
--
Create date: <2010-06-11>
--
Description: <Demo:存储过程中使用事务>
--
=============================================
Create PROCEDURE [ dbo ] . [ USP_ProcedureWithTransaction_Demo ]
As
Begin
Begin Try
Begin Transaction
Update Lock Set LockTypeID = 1 Where LockID = 32 -- 此语句将出错,LockTypeID为Int类型
Insert Into Lock(LockTypeID) Values ( ' A ' )
Commit Transaction
End Try
Begin Catch
Rollback Transaction
End Catch
End
GO

Exec [ USP_ProcedureWithTransaction_Demo ]

 

你可能感兴趣的:(sqlserver)