SQL添加事务处理

--modi by lmt
declare
@errorSum int --记录错误数
begin
Create table #CheckreqAccState(CheckReqID varchar(20), ADVID varchar(20), DocAdvStatus int, AccState varchar(20))
set @SqlTxt = 'insert into #CheckreqAccState(CheckReqID, ADVID, DocAdvStatus, AccState)
select A.CheckReqID, A.ADVID, B.DocAdvStatus, AccState from GHMTDB..tCheckReq_Main(nolock) A Left join GHMTDB.dbo.tRecipe_Detail(nolock) B on A.ADVID = B.ADVID
where A.CheckReqID in (' + @CheckReqID + ')'
exec(@SqlTxt)
if exists(select * from #CheckreqAccState where DocAdvStatus < 3)
begin
set @ReqInfor = '确费失败:申请单号中【' + @CheckReqID +'】存在未扣费的记录,请核实'
drop table #CheckreqAccState
goto Err
end
else
begin transaction
Update GHMTDB..tCheckReq_Main
Set State = 3, ReportUser = @OperUserID, ReportDate = GetDate()
Where CheckReqID in (select CheckReqID from #CheckreqAccState)
set @errorSum=@errorSum + @@error
update tRecipe_Detail
set PerformUserID = @OperUserID, DocAdvStatus = 5,
PerformDate = GETDATE()
where ADVID in (select ADVID from #CheckreqAccState)
set @errorSum=@errorSum+@@error
update tRecipe_Detail_FeeItem
set PerformUserID = @OperUserID, DocAdvStatus = 5,
PerformDate = GETDATE()
where ADVID in (select ADVID from #CheckreqAccState)
set @errorSum=@errorSum+@@error
update tChargeDetail
set PerformUserID = @OperUserID, DocAdvStatus = 5,
PerformDate = GETDATE()
where ADVID in (select ADVID from #CheckreqAccState)
set @errorSum=@errorSum+@@error
drop table #CheckreqAccState
if @errorSum > 0
begin
set @ReqInfor = '执行失败'
select @ReqInfor 'ReqInfor',@ChargeSN 'ChargeSN'
rollback transaction
end
else
begin
set @ReqInfor = '执行完成'
select @ReqInfor 'ReqInfor',@ChargeSN 'ChargeSN'
commit transaction
end
end
end --end else if @DataSource = '门诊'
end--modi end

转载于:https://www.cnblogs.com/meitai/p/9227235.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值