MSSQL2000和MSSQL2005以上版本的异常处理语法是不相同的。

SQL Server 2005以上版本支持结构化异常处理,而MSSQL2000是不支持的。

1)先看MSSQL 2000的异常处理语法:

create proc sp_mssql2000
(@TitleName nvarchar(128))
as

declare     @err int,

begin transaction

insert into...

select @err = @@error
if @err <> 0
    GOTO ERROR_HANDLER

update...set...

if @err <> 0
    GOTO ERROR_HANDLER

GOTO EXIT_Proc

ERROR_HANDLER:
ROLLBACK TRANSACTION

-- Log the error 
insert Log (tableName, UserName, errorNumber, errorSeverity, errorState)
values (@tableName, suser_sname(), @err, 0, 0)

EXIT_Proc:
commit tran

2)MSSQL2005的异步处理语法:

create proc sp_mssql2005
(@TitleName nvarchar(128))
as
declare @err int

BEGIN TRY

begin transaction
    insert dbo.Authors  (au_fname, au_lname, TitleID,CommissionRating)
    values (@au_fname, @au_fname, @@IDENTITY, @CommissionRating)
    commit transaction
END TRY

BEGIN CATCH
    
    ROLLBACK TRANSACTION

-- Log the error 
    insert  into log (UserName, tableName,     
            errorNumber, errorSeverity, errorState, errorMessage)
    values (suser_sname(), @tableName, ERROR_NUMBER(),  
            ERROR_SEVERITY(), ERROR_STATE(), ERROR_MESSAGE())

RAISERROR (@errormessage, 16,1)

--返回用户定义的错误信息并设系统标志,记录发生错误。

END CATCH

mssql存储过程异常处理的更多相关文章

  1. Oracle 存储过程异常处理

    Oracle 存储过程异常处理 1.异常的优点    如果没有异常,在程序中,应当检查每个命令的成功还是失败,如  BEGIN  SELECT ...  -- check for ’no data f ...

  2. Oracle结果集 (MSSQL存储过程写报表)

    接触SQL Server比较多,写报表是用存储过程实现. 对Oracle实现像MSSQL那样,还是有很多疑问

  3. 托管代码编写mssql存储过程

    参考:http://wenku.it168.com/d_000642903.shtml 打开vs,创建数据库项目,添加新项,选择sql clr c#, 选择存储过程. 样例: [Microsoft.S ...

  4. mysql数据库存储过程异常处理

    14.1.4  定义条件和处理程序 定义条件和处理程序是事先定义程序执行过程中可能遇到的问题.并且可以在处理程序中定义解决这些问题的办法.这种方式可以提前预测可能出现的问题, 并提出解决办法.这样可以 ...

  5. MSSQL手札三 MSSQL存储过程

    --存储过程完成一段sql代码的封装 create proc trim --参数列表,多个间用逗号分隔 ) as --自定义代码段 ) set @str1=LTRIM(RTRIM(@str)) pri ...

  6. MSSQL存储过程(好久的笔记,翻出来怀念下)

    语法结构: create proc 名称 参数列表 as 代码段 调用: exec 存储过程名称 参数列表 要点: .可以使用output修饰参数 .可以使用默认值,注意需要将最后的参数设置成默认值 ...

  7. MSSQL - 存储过程Return返回值

    1.存储过程中不使用外部参数. 存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ========================== ...

  8. MSSQL - 存储过程事物

    效果: 创建带有事物的存储过程: use sales --指定数据库 create table bb --创建bb 这个表 ( ID int not null primary key ,--账号 Mo ...

  9. MSSQL - 存储过程OutPut返回值

    1.存储过程中不使用外部参数. 存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ========================== ...

随机推荐

  1. 关于Farseer.net轻量级ORM开源框架 V1.0 概念版本开发的消息

    V0.2版的开源距离今天(05年03月)已有近3年的时间.可以说这个版本已经有点落伍的感觉了,呵呵. V0.2版至今一直处于BUG的修复及一些细小功能的增加,所以版本号上一直没有变化. 其实在这1.2 ...

  2. IE主页被恶意修改处理办法

    HKEY_USERS/.DEFAULT/Software/Policies/Microsoft/Internet Explorer/Control Panel 下的DWORD值“homepage”的键 ...

  3. 如何选安卓android|linux系统开发板,简化学习难度,缩短开发进程

    平台一:iTOP-4412精英版 系统支持:Android 4.0.3系统  / Android 4.4系统 / Linux + Qt系统 / Ubuntu12.04系统 开发板特点:Cortex-A ...

  4. C# 支持多线程

    C# 支持多线程并行执行程序 .一个程序由一个单线程开始,该单线程由CLR和操作系统创建而成,并具有多线程创建额外线程的功能. .创建线程的方法 2.1 通过Thread类来创建线程. ThreadS ...

  5. confluence的安装

    参考链接:https://www.ilanni.com/?p=11989 一.什么是confluence confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它可以实 ...

  6. incremental linking(增量链接)的作用

    转:incremental linking(增量链接)的作用 今天编译一个C++程序时,报了一个奇怪的错误(之前是好好的): 1>LINK : fatal error LNK1123: fail ...

  7. JavaSE-16 集合框架

    学习要点 Java集合框架内容 ArrayList和LinkedList HashMap Iterator 泛型集合 Java的集合框架 1  概述 数据结构是以某种形式将数据组织在一起的集合,它不仅 ...

  8. 布尔上下文,这里misreading返回的是来源列表中元素的个数,如果列表中2个值都是undef,则列表元素个数是1: while( $misreading = (my $test_consideration, my $english_pragma) = each %map_function){

    布尔上下文,这里misreading返回的是来源列表中元素的个数, 列表赋值运算的值将会是来源列表中元素的个数,空列表表示0,如果列表中2个值都是undef,则列表元素个数是1 布尔上下文,这里mis ...

  9. CSS 全局样式

    设置全局 CSS 样式:基本的 HTML 元素均可以通过 class 设置样式并得到增强效果:还有先进的栅格系统.

  10. [Python3网络爬虫开发实战] 1.2.5-PhantomJS的安装

    PhantomJS是一个无界面的.可脚本编程的WebKit浏览器引擎,它原生支持多种Web标准:DOM操作.CSS选择器.JSON.Canvas以及SVG. Selenium支持PhantomJS,这 ...