--存储过程中使用事务,并且加入异常处理机制.
-- =============================================
CREATE PROCEDURE [dbo].[UP_Orders_Import]
AS
BEGIN
BEGIN TRAN --开启事务
BEGIN TRY SELECT 1/0 COMMIT TRAN --提交事务
END TRY
BEGIN CATCH
DECLARE
@ErrorMessage NVARCHAR(4000) ,
@ErrorNumber INT ,
@ErrorSeverity INT ,
@ErrorState INT ,
@ErrorLine INT ,
@ErrorProcedure NVARCHAR(200) ; SELECT
@ErrorNumber=ERROR_NUMBER(),@ErrorSeverity=ERROR_SEVERITY(),
@ErrorState=ERROR_STATE(),@ErrorLine=ERROR_LINE(),
@ErrorProcedure=ISNULL(ERROR_PROCEDURE(),'-') ;
SELECT
@ErrorMessage=N'Error %d, Level %d, State %d, Procedure %s, Line %d, '
+'Message: '+ERROR_MESSAGE() ;
RAISERROR
(
@ErrorMessage,
@ErrorSeverity,
1,
@ErrorNumber, -- parameter: original error number.
@ErrorSeverity, -- parameter: original error severity.
@ErrorState, -- parameter: original error state.
@ErrorProcedure, -- parameter: original error procedure name.
@ErrorLine -- parameter: original error line number.
) ;
ROLLBACK TRAN --回滚事务
END CATCH
END

  sql事务注意点:

        DECLARE @Referenznummer NVARCHAR(MAX)
SET @Referenznummer = '934590-AE1023-1' BEGIN TRAN
BEGIN TRY DECLARE @returnValue INT
SET @returnValue = 11110 --(1)、变量在事务中是不会进行回滚的;默认值虽然是11110
SET @returnValue = 1 IF (
NOT EXISTS ( SELECT 1
FROM tbOrder
WHERE Referenznummer = @Referenznummer )
)
BEGIN --(2)、出现异常后,直接终止下面的代码,跳转到CATCH代码块中.
SELECT 10 / 0
--begin
SELECT @@ERROR
SELECT 100
IF (@@error <> 0) --此语句在try catch中是捕获不到的。
BEGIN
SET @returnValue = 0
END
--end
END
ELSE
BEGIN
SET @returnValue = 3
END
COMMIT TRAN
END TRY
BEGIN CATCH
PRINT 'error'
--SET @returnValue = 0
ROLLBACK TRAN
END CATCH SELECT @returnValue
--RETURN @returnValue

  

SQL中存储过程中使用事务,并且加入异常处理机制.的更多相关文章

  1. sql 在存储过程中使用事务(转)

    本来想自己写一下,后来发现这个写的比我理解的要好,所以直接拽过来了,链接地址:https://www.cnblogs.com/RascallySnake/archive/2010/05/17/1737 ...

  2. SQL Server存储过程中使用表值作为输入参数示例

    这篇文章主要介绍了SQL Server存储过程中使用表值作为输入参数示例,使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样 ...

  3. Sql Server 存储过程中查询数据无法使用 Union(All)

    原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...

  4. ORACLE动态sql在存储过程中出现表或视图不存在的解决方法

    Oracle动态sql在存储过程中出现表或视图不存在的解决方法 CREATE OR REPLACE PROCEDURE P_test is strsql varchar2(2000); BEGIN   ...

  5. SQL Server 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过

    存储过程 创建存储过程 use pubs --pubs为数据库 go create procedure MyPRO --procedure为创建存储过程关键字,也可以简写proc,MyPRO为存储过程 ...

  6. SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法

    本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种 ...

  7. sql server 存储过程中使用变量表,临时表的分析(续)

    最近,我有一朋友,对我说他的数据库中的很多存储过程,执行都是超时.让我替他看看是什么原因.我一看,原来他的存储过程中用了很多的临时表与变量表.于是我跟他说过犹不及. 在存储过程中使用临时表或变量表,使 ...

  8. sql server 存储过程的(包含事务)方法里面,采用游标循环,批量删除(修改)数据

    sqlserver 数据库 1.下面是完整的 在存储过程中 使用游标进行 循环删除的实例(包括存储过程中,事务的应用) 2.有问题的话,欢迎随时讨饶我,相信大家看下注释应该就能明白了,很简单的一个,小 ...

  9. oracle中存储过程中调用存储过程

    存储过程中调用存储过程 create or replace package body PF_Role_Pack is procedure sp_GetPage_Role(pageSize_ in nu ...

随机推荐

  1. WebService开发步骤

    WebService原理什么的百度很多我就说了,无非就是提供一个接口放在服务端,客户端实现这个接口就可以拿到自己需要的东西. 现在简单说一下用myEclipse来实现服务端和客户端.另一种WebSer ...

  2. printf 缓冲区问题

    突然发现printf的问题,看了这个很有意思,学习一下 转自:http://blog.csdn.net/shanshanpt/article/details/7385649 昨天在做Linux实验的时 ...

  3. TestNG Listener

    常用接口 IExecutionListener   监听TestNG运行的启动和停止. IAnnotationTransformer 注解转换器,用于TestNG测试类中的注解. ISuiteList ...

  4. Java学习----一个对象怎么调用另一个对象呢?

    打包 jar cvfm test1.jar manifmest.mf teacher.class student.class test1.class 运行 java -jar test1.jar pu ...

  5. JQuery无法获取动态添加的图片宽度问题解决办法

    $('.imgUl li,.v_img').click(function(){ var _left = 0; var _top = 0; $('body').append('<div class ...

  6. QQ空间API接口

    (以下内容可能会随着时间改变而改变!) 查看对方QQ空间的背景音乐 http://qzone-music.qq.com/fcg-bin/cgi_playlist_xml.fcg?json=0& ...

  7. 01:A+B问题

    总时间限制:  1000ms 内存限制:  65536kB 描述 在大部分的在线题库中,都会将A+B问题作为第一题,以帮助新手熟悉平台的使用方法. A+B问题的题目描述如下:给定两个整数A和B,输出A ...

  8. bzoj2597: [Wc2007]剪刀石头布

    Description 在一些一对一游戏的比赛(如下棋.乒乓球和羽毛球的单打)中,我们经常会遇到A胜过B,B胜过C而C又胜过A的有趣情况,不妨形象的称之为剪刀石头布情况.有的时候,无聊的人们会津津乐道 ...

  9. wordpress 设置头像

    默认的wordpress头像是第三方的.. 如果想自己上传.就得装插件了 WP User Avatar 安装完成后..设置下面就会出现这个选项..然后自己就可以上传头像了 原文:http://abuj ...

  10. 工作总结:MFC调用Windows自带新建、保存对话框代码

    保存: void CExample17Dlg::OnBnClickedSaveButton() { // TODO: Add your control notification handler cod ...