存储过程嵌套事务处理

存储过程嵌套事务处理

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>


------------------------------------
--用途:次数项目续费
--创建人名称:qzf
--时间:2012-12-21 10:04:00
------------------------------------
ALTER<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> PROCEDURE sp_Card_Cs_XuFei(<br><wbr><wbr><wbr> @msg varchar(200) = '' out<wbr> ,<br><wbr><wbr>@card_no varchar(50),<br><wbr><wbr>@content varchar(8000),<br><wbr><wbr><wbr> @gongsi_no varchar(30),<br><wbr><wbr><wbr> @czy_no varchar(30),<br><wbr><wbr><wbr> @czy_name varchar(30)<br> )<br><wbr>AS<br><font color="#EE0000"><wbr> declare @outer_tran int</wbr></font><br><wbr> declare @rst int<br><wbr> declare @member_name varchar(200)<br><wbr> declare @gongsi_name varchar(200)<br><wbr> declare @card_kind_no varchar(200)<br><wbr> declare @card_kind_name varchar(200)<br><wbr> declare @create_gongsi_no varchar(200)<br><wbr> declare @create_gongsi_name varchar(200)<br><wbr> declare @jiesuan_fangshi_name varchar(30)<br><wbr> declare @id numeric(24,0)</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr>Begin<br><wbr><font color="#EE0000">set @outer_tran = @@trancount<br><wbr> if (@outer_tran = 0) --单独调用<br><wbr> begin<br><wbr><wbr><wbr> begin tran<br><wbr> end else begin --嵌套调用<br><wbr><wbr><wbr> save tran tranPoint<br><wbr> end<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></font><wbr> --信息<br><wbr> select @card_kind_no = card_kind_no,@member_name=member_name,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> @create_gongsi_no = gongsi_no<br><wbr> from card a where card_no = @card_no<br><wbr> select @create_gongsi_name = gongsi_name from base_gongsi where <a href="mailto:gongsi_no=@create_gongsi_no">gongsi_no=@create_gongsi_no</a><br><wbr> select @gongsi_name=gongsi_name from base_gongsi where gongsi_no = @gongsi_no<br><wbr> select @card_kind_name = card_kind_name from<wbr> card_kind where <a href="mailto:card_kind_no=@card_kind_no">card_kind_no=@card_kind_no</a><br><wbr> select @jiesuan_fangshi_name = jiesuan_fangshi_name from<wbr> info_jiesuanfangshi where jiesuan_fangshi_no='J001'<br><wbr> --插入次数项目明细<br><wbr>insert into Card_Detail_Cs( card_no, gongsi_no, gongsi_name, create_gongsi_no, create_gongsi_name, riqi,<br><wbr><wbr><wbr> member_name, card_kind_name, czy_no, czy_name, remark, cs_kind, danhao, goods_no, goods_name, goods_je,<br><wbr><wbr><wbr> goods_jfcs, goods_dfcs, goods_yucs)<br><wbr>select @card_no,@gongsi_no,@gongsi_name,'','',getdate(),<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> @member_name,@card_kind_name,@czy_no,@czy_name,'',case when col2 &gt; 0 then '手动增加' else '手动减少' end,'' ,col1,b.goods_name,0,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> case when col2 &gt; 0 then col2 else 0 end,case when col2 &gt; 0 then 0 else (-1)*col2 end,0<br><wbr>from F_GetTable(@content,',','|') a left join goods b on a.col1=b.goods_no<br><wbr> if (@@error &lt;&gt; 0)<br><wbr> begin<br><wbr><wbr><wbr> set @msg = '插入次数项目明细失败。'<br><wbr><wbr><wbr> goto Err<br><wbr> end<br><wbr><br><wbr> --更新信息<br><wbr> update a set goods_cs=goods_cs+b.col2,goods_yucs=goods_yucs+b.col2<br><wbr> from card_goods a inner join F_GetTable(@content,',','|') b<br><wbr><wbr><wbr><wbr><wbr><wbr> on a.goods_no=b.col1<br><wbr> where a.card_no = @card_no<br><wbr> if (@rst &lt;&gt; 0 or @@error &lt;&gt; 0)<br><wbr> begin<br><wbr><wbr><wbr> set @msg = '更新卡内次数项目失败。'<br><wbr><wbr><wbr> goto Err<br><wbr> end<br><wbr> --插入不存在的次数项目<br><wbr> insert card_goods(card_no, goods_no, goods_cs, goods_usecs, goods_yucs,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> je, kind, remark_je, remark)<br><wbr> select @card_no,col1,col2,0,col2,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 0,'',0,''<br><wbr> from F_GetTable(@content,',','|') a<br><wbr> where col1 not in (select goods_no from card_goods where card_no = @card_no)<br><wbr> if (@rst &lt;&gt; 0 or @@error &lt;&gt; 0)<br><wbr> begin<br><wbr><wbr><wbr> set @msg = '插入不存在的次数项目失败。'<br><wbr><wbr><wbr> goto Err<br><wbr> end<br><wbr><br><wbr><font color="#EE0000">if (@outer_tran = 0) --单独调用<br><wbr> begin<br><wbr><wbr><wbr> commit tran<br><wbr> end</wbr></wbr></wbr></wbr></wbr></font></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr> return 0</wbr>

<wbr>End<br><font color="#EE0000"><wbr>Err:<br><wbr>Begin<br><wbr> if (@outer_tran = 0)<br><wbr><wbr> begin<br><wbr><wbr><wbr><wbr> rollback tran<br><wbr><wbr> end else<br><wbr><wbr> begin<br><wbr><wbr><wbr><wbr> rollback tran tranPoint --嵌套调用回滚到事务点<br><wbr><wbr> end<br><wbr><wbr> return -1<br><wbr>End</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></font></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

<wbr></wbr>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值