USE [HXTst]
GOSET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[Pro_AdvBackAmount]as
BEGIN
declare @sql nvarchar(max)
declare @PeriNm int
declare @CtNm VARCHAR(MAX)
declare @OverDueCg floatBEGIN TRANSACTION
set @sql='update AdvBackInf Set ApporveState=''已审核'' where ContractNm=@CtNm'
exec @sql
set @sql='update InterestReceive set RepayAmount=receivableAmount,PeriodRepyDate=@PeriNm where ContractNm=@CtNm'
exec @sql
set @sql='update InterestReceive set RepayAmount=RepayAmount''+@OverDueCgwhere''where
ContractNm=@CtNm and PeriodRepyDate=@PeriNm and RepayType=''PeriodOverdueCharge'''
exec @sqlCOMMIT TRANSACTION IF ( @@ERROR <> 0 )ROLLBACK TRANSACTION end以前都是ADO处理事务
以上代码是我的T-SQL事务处理,不知道对没有,情大家帮忙看下,
GOSET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[Pro_AdvBackAmount]as
BEGIN
declare @sql nvarchar(max)
declare @PeriNm int
declare @CtNm VARCHAR(MAX)
declare @OverDueCg floatBEGIN TRANSACTION
set @sql='update AdvBackInf Set ApporveState=''已审核'' where ContractNm=@CtNm'
exec @sql
set @sql='update InterestReceive set RepayAmount=receivableAmount,PeriodRepyDate=@PeriNm where ContractNm=@CtNm'
exec @sql
set @sql='update InterestReceive set RepayAmount=RepayAmount''+@OverDueCgwhere''where
ContractNm=@CtNm and PeriodRepyDate=@PeriNm and RepayType=''PeriodOverdueCharge'''
exec @sqlCOMMIT TRANSACTION IF ( @@ERROR <> 0 )ROLLBACK TRANSACTION end以前都是ADO处理事务
以上代码是我的T-SQL事务处理,不知道对没有,情大家帮忙看下,
set @sql='update InterestReceive set RepayAmount=RepayAmount''+@OverDueCgwhere''where
把'' 去掉。
declare @sql nvarchar(max)
declare @PeriNm int
declare @CtNm VARCHAR(MAX)
declare @OverDueCg float
BEGIN TRY
BEGIN TRANSACTION
set @sql='update AdvBackInf Set ApporveState=''已审核'' where ContractNm=@CtNm'
exec @sql
set @sql='update InterestReceive set RepayAmount=receivableAmount,PeriodRepyDate=@PeriNm where ContractNm=@CtNm'
exec @sql
set @sql='update InterestReceive set RepayAmount=RepayAmount''+@OverDueCgwhere''where
ContractNm=@CtNm and PeriodRepyDate=@PeriNm and RepayType=''PeriodOverdueCharge'''
exec @sql
IF XACT_STATE() = 1COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF XACT_STATE() != 0
ROLLBACK TRANSACTION
/*下面这个抛出错误信息,可要可不要*/
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_LINE () AS ErrorLine
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_MESSAGE() AS ErrorMessage;END CATCH
如果你分开写的话,在出错那条语句之前成功执行的语句将不会被回滚