--存储过程中使用事务,并且加入异常处理机制.
-- =============================================
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. 【BZOJ1483】【链表启发式合并】梦幻布丁

    Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. Input 第 ...

  2. 如何:在 StackPanel 和 DockPanel 之间进行选择

    虽然可以使用 DockPanel 或 StackPanel 来堆叠子元素,但这两个控件并不总是会产生相同的结果. 例如,子元素的放置顺序可能会影响 DockPanel 中子元素的大小,但不会影响 St ...

  3. Tomcat虚拟主机配置

    3.1.配置虚拟主机 配置虚似主机就是配置一个网站. 在Tomcat服务器配置一个虚拟主机(网站),需要修改conf文件夹下的server.xml这个配置文件,使用Host元素进行配置,打开serve ...

  4. ubuntu 安装 open in teminal

    sudo apt-get install nautilus-open-terminalnautilus -q

  5. DataTable举例

    // clrTest1.cpp: 主项目文件. #include "stdafx.h" using namespace System; using namespace System ...

  6. C++实现红黑树,仿STL封装

    //RB_Tree.hpp //The code of red black trees //2011/12/31 by Adoo // The foundation :http://www.roadi ...

  7. easyui_tree 复选框 动态加载树

    controller动态获取单位用户树 #region 下拉树菜单 /// <summary> /// 获取工作人员树菜单 /// </summary> /// <par ...

  8. IOS网络编程:HTTP

    IOS网络编程:HTTP HTTP定义了一种在服务器和客户端之间传递数据的途径. URL定义了一种唯一标示资源在网络中位置的途径. REQUESTS 和 RESPONSES: 客户端先建立一个TCP连 ...

  9. Unity干中学——如何实现类似Windows Store 应用程序和Android Toast的通知?

    要实现通知中心功能,首先要创建一个游戏物体,在上面挂载GUITeture和GUIText脚本.注意GUITexture和GUIText脚本的顺序,GUITexture在前,GUIText在后,否则GU ...

  10. Spring Framework Reference,Documentation,spring英文文档.pdf 官方文档

    直接上链接:http://files.cnblogs.com/files/kongkaikai/spring-framework-reference.pdf 官网链接:http://docs.spri ...