SQLSERVER2008事务处理机制TRANSACTION

2014-11-24 13:14:32 · 作者: · 浏览: 0
SQLSERVER2008事务处理机制TRANSACTION
储存过程A调整储存过程B,当B出错时会回退事务
CRAETE PROCEDURE [dbo].[Accounting_Group_Api_Check_Is_Exist](
 -- Add the parameters for the stored procedure here
  @Accounting_Group_Code nvarchar(20)
 ,@Language nvarchar(10)
 )
AS
BEGIN

 declare @Error_Msg nvarchar(2000)

    BEGIN TRY
  IF EXISTS (SELECT 1 FROM Accounting_Group_Tab WHERE Accounting_Group_Code=@Accounting_Group_Code)
  BEGIN
   SET @Error_Msg= dbo.sys_get_Message_F('Accounting_Group_Is_Exist',@Language)
   RAISERROR(@Error_Msg,16,1) WITH NOWAIT 
  END 
    END TRY
    BEGIN CATCH
  DECLARE @msg nvarchar(2000) =char(13)+'ERROR_PROCEDURE:'+ERROR_PROCEDURE() +char(13)
          +'ERROR_LINE:'+Cast(ERROR_LINE() as nvarchar(20))+char(13)
          +'ERROR_MESSAGE:'+ERROR_MESSAGE()       
  RAISERROR (@msg,16,1)
 END CATCH 

END



CREATE PROCEDURE [dbo].[Accounting_Group_Api_New](    
    @Accounting_Group_Code nvarchar(20),
    @Accounting_Group_Desc nvarchar(50),    
    @Language nvarchar(10)
 )
AS
BEGIN
   declare @Error_Msg nvarchar(2000)

--开始事务处理
BEGIN TRY
  BEGIN TRANSACTION 
   
         
    -- 查  群 是否已存在
    EXEC dbo.Accounting_Group_Api_Check_Is_Exist @Accounting_Group_Code,@Language
    
    --新增  群 
 INSERT INTO dbo.Accounting_Group_Tab
           (Accounting_Group_Code
           ,Accounting_Group_Desc
           )
     VALUES
           (@Accounting_Group_Code
           ,@Accounting_Group_Desc
           )
   

   COMMIT TRANSACTION --提交事务
END TRY
BEGIN CATCH
 DECLARE @msg nvarchar(2000) =char(13)+'ERROR_PROCEDURE:'+ERROR_PROCEDURE() +char(13)
          +'ERROR_LINE:'+Cast(ERROR_LINE() as nvarchar(20))+char(13)
          +'ERROR_MESSAGE:'+ERROR_MESSAGE()       
   RAISERROR (@msg,16,1)
   ROLLBACK TRANSACTION --出错回滚事务
END CATCH
             
END