存储过程嵌套事务处理
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 > 0 then '手动增加' else '手动减少' end,'' ,col1,b.goods_name,0,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> case when col2 > 0 then col2 else 0 end,case when col2 > 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 <> 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 <> 0 or @@error <> 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 <> 0 or @@error <> 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>