`
az7772010
  • 浏览: 201916 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

存储过程嵌套事务处理

 
阅读更多

存储过程嵌套事务处理

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>

分享到:
评论

相关推荐

    MySQL存储过程例子(包含事务,输出参数,嵌套调用)

    MySQL存储过程例子,包含事务,输出参数,嵌套调用,学习mysql存储过程的朋友可以参考下。

    游标嵌套 STATUS 异常 存储过程

    1,异常处理,事务回滚。 2,错误消息返回。 3,游标嵌套。 4,对于嵌套游标STATUS的互相影响问题的解决办法《注意001和002的注释位置,fetch的位置》。 对于初学者,存储过程重要的几个方面,都有展示到,大虾们请...

    SQLServer2000高级编程技术-已添加书签,想学存储过程、SQL编程务必要看,分析非常透彻

    6.3.4 事务处理的结构 6.3.5 嵌套的事务 6.3.6 已命名的事务 6.3.7 保存点 6.3.8 锁定 6.3.9 事务隔离级别和提示 6.3.10 分布式事务 6.3.11 典型的出错 6.4 小结 6.5 练习 第7章 调试和出错处理 7.1 调试 7.1.1 什么...

    SQLServer2000高级编程技术(part02)-想学存储过程 SQL编程 务必要看

    6.3.4 事务处理的结构 6.3.5 嵌套的事务 6.3.6 已命名的事务 6.3.7 保存点 6.3.8 锁定 6.3.9 事务隔离级别和提示 6.3.10 分布式事务 6.3.11 典型的出错 6.4 小结 6.5 练习 第7章 调试和出错处理 7.1 调试 7.1.1 什么...

    dbVisitor 是一个数据库 ORM 工具

    提供对象映射、丰富的类型处理、动态SQL、存储过程、内置分页方言20+、 支持嵌套事务、多数据源、条件构造器、INSERT 策略、多语句/多结果。兼容 Spring 及 MyBatis 用法。 它不依赖任何其它框架,因此可以很方便的...

    SQL Procedure

    SQL一些存储过程示例 演示了存储过程基本使用。 以及演示了在存储过程中使用:临时表、函数、事务、嵌套查询、游标、异常处理、数据库的身份权限等。 详细使用见示例。

    精通sql结构化查询语句

    以SQL Server为工具,讲解SQL语言的应用,提供了近500个曲型应用,读者可以随查随用,深入讲解SQL语言的各种查询语句,详细介绍数据库设计及管理,详细讲解存储过程、解发器和游标等知识,讲解了SQL语言在高级语言中...

    神通数据库-数据库快速入门.pdf

    • 支持事务处理 神通数据库提供了高效的事务管理机制,保证每个事务的完整性。该机制提供: 锁定机制,使事务相互隔离。 记录机制,保证事务的持久性。即使服务器硬件、操作系统或数据库自身出现故障,也可以在重新...

    sql总结.doc

    与数据库提供的事务处理结合一起使用。 3.存储过程可以重复使用,可减少数据库开发人员的工作量。 4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。 (4)存储过程的优缺点 优点: 作用的四条加上 1....

    ServletEx2 1.0 Java WEB 应用开发框架 完整版 (release, source, document, example 2010-01-13)

    方便、高效的数据库事务处理机制,使开发人员专注于业务逻辑 灵活的数据库处理接口,方便根据开发需求扩展 方便处理业务对象的获取、存储 规范业务对象设计,使应用的开发更具合理性、可扩展性 目标 – Template ...

    精通SQL--结构化查询语言详解

    15.3.5 使用enterprise manager创建存储过程和函数 315 15.3.6 修改和删除存储过程和函数 317 15.4 oracle中的流控制语句 319 15.4.1 条件语句 319 15.4.2 循环语句 320 15.4.3 标号和goto 322 15.5 oracle...

    SQL server 管理事务和数据库介绍

    用SQL server 处理数据库,主要就是和数据库还有处理数据库的事务打... 您可能感兴趣的文章:SQL Server重温 事务MySQL InnoDB之事务与锁详解MySQL存储过程例子(包含事务,输出参数,嵌套调用)mysql的XA事务恢复过程详解

    《企业人事基本信息管理系统》 sql 期末大作业

    储存过程至少要出现4类,分别是增、删、改、查 函数至少有4个,包括有参数,无参数,返回值要体现 游标至少4个 事务至少有3类,分为回滚与不回滚,设置保存点 如果选择两个人一组,每个班最多不超过3组,并且同组的...

    数据库管理系统SQL-Server.doc

    表中每行最大字节数为8060 c) 列:每个表最多1024个列 d) 索引:每个表一个簇式索引,最多249个非簇式索引,一个复合索引最多有16个索引关 键字 e) 存储过程:一个存储过程最多可以有1024个参数和最多32级嵌套 ...

    精通SQL 结构化查询语言详解

    15.3.5 使用Enterprise Manager创建存储过程和函数 15.3.6 修改和删除存储过程和函数  15.4 Oracle中的流控制语句  15.4.1 条件语句  15.4.2 循环语句  15.4.3 标号和GOTO  15.5 Oracle数据库中的存储...

    SQL21日自学通

    批量载入与事务处理进程314 删除索引以优化数据的载入316 经常使用COMMIT 来让DBA 走开316 在动态环境中重新生成表和索引317 数据库的调整319 性能的障碍322 内置的调整工具323 总结323 问与答324 校练场324 练习324...

Global site tag (gtag.js) - Google Analytics