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