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]

posted @ 2010-06-12 10:04  rob_2010  阅读(134)  评论(0)    收藏  举报