zoukankan      html  css  js  c++  java
  • SQL Server2012中的Throw语句尝试 RAISERROR和THROW比较

    SQL SERVER2012实现了类似C#抛出异常的Throw语句。相比较于SQL Server2005之前使用@@ERROR,和SQL Server2005之后使用RAISERROR()引发异常都是一个不小的进步.

    一、RAISERROR和TRY…CATCH

    1.SQL Server2005/2008中,使用RAISERROR和TRY…CATCH语句来抛出异常相比较根据@@ERROR进行判断来讲已经进步了很多。但是使用RAISERROR有一个非常不好的一点是无法返回真正出错的行数。

    --使用RAISERROR返回错误行数不正确
    begin tran
    BEGIN TRY
        select 1/0;
    commit
    END TRY

    begin catch
        rollback
        raiserror('自定义错误信息',12,1)
        print error_message();--遇到以零作除数错误。
    end catch
    View Code

     

    RaisError()的弊端
    1.严重性级别及其影响非常复杂
    2.错误导致的结果及其处理流程非常复杂
    --不作处理
    --语句终止
    --作用域终止
    --批处理终止
    --事务终止
    --连接终止
    3.try/catch block导致RaisError不可预测
    4.即将被取代

    二.THROW

    使用SQL SERVER2012新增的THROW语句,则变得简单很多。并且能正确返回出错的行,对于比较长的T-SQL语句来说,这节省了不少时间.

    --使用throw返回正确行数
    begin tran
    BEGIN TRY
        select 1/0;
    commit
    END TRY

    begin catch
        rollback;
        throw
    end catch
    View Code

  • 相关阅读:
    Bruce Eckel:编程生涯(转载)
    NSScanner用法详解
    如何为github上的项目添加gif效果图
    iOS-网址集
    支持后台播放音频
    iOS:UITableView 方法 属性
    Quartz2D简介及基本线条绘制
    遍历输出所有子视图(View)
    UIView常用属性与方法/UIKit继承结构
    netty02(接受消息以后进行返回)
  • 原文地址:https://www.cnblogs.com/Snowfun/p/5197653.html
Copyright © 2011-2022 走看看