zoukankan      html  css  js  c++  java
  • sql server 2005中新增加的try catch学习

    sql server 2005中新增加的try catch,可以很容易捕捉异常了,今天大概学习看了下,归纳下要点如下 需要什么来搜一搜吧so.bitsCN.com

    基本用法BEGIN TRY
    { sql_statement |
    statement_block }
    END TRY
    BEGIN CATCH
    { sql_statement |
    statement_block }
    END CATCH
    ,和普通语言的异常处理用法差不多,但要注意的是,SQL SERVER只捕捉那些不是严重的异常,当比如数据库不能连接等这类异常时,是不能捕捉的一个例子:BEGIN TRY
    DECLARE @X INT
    -- Divide by zero to generate Error
    SET @X = 1/0
    PRINT 'Command after error in TRY block'
    END TRY
    BEGIN CATCH
    PRINT 'Error Detected'
    END CATCH
    PRINT 'Command after TRY/CATCH blocks'
    另外try catch可以嵌套Begin TRY
    delete from GrandParent where Name = 'John Smith'
    print 'GrandParent deleted successfully'
    End Try
    Begin Catch
    Print 'Error Deleting GrandParent Record'
    Begin Try
    delete from Parent where GrandParentID =
    (select distinct ID from GrandParent where Name = 'John Smith')
    Print 'Parent Deleted Successfully'
    End Try
    Begin Catch
    print 'Error Deleting Parent'
    Begin Try play.bitsCN.com累了吗玩一下吧
    delete from child where ParentId =
    (select distinct ID from Parent where GrandParentID =
    (select distinct ID from GrandParent where Name = 'John Smith'))
    print 'Child Deleted Successfully'
    End Try
    Begin Catch
    Print 'Error Deleting Child'
    End Catch
    End Catch
    End Catch
    另外,SQL SERVER 2005在异常机制中,提供了error类的方法方便调试,现摘抄如下,比较简单,不予以解释ERROR_NUMBER(): Returns a number associated with the error.ERROR_SEVERITY(): Returns the severity of the error.ERROR_STATE(): Returns the error state number associated with the error.ERROR_PROCEDURE(): Returns the name of the stored procedure or trigger in which the error occurred.ERROR_LINE(): Returns the line number inside the failing routine that caused the error. ERROR_MESSAGE(): Returns the complete text of the error message. The text includes the values supplied for any substitutable parameters, such as lengths, object names, or times. 最后举例子如下,使用了error类的方法BEGIN TRY

    feedom.net关注网管是我们的使命


    DECLARE @X INT
    -- Divide by zero to generate Error
    SET @X = 1/0
    PRINT 'Command after error in TRY block'
    END TRY
    BEGIN CATCH
    PRINT 'Error Detected'
    SELECT ERROR_NUMBER() ERNumber,
    ERROR_SEVERITY() Error_Severity,
    ERROR_STATE() Error_State,
    ERROR_PROCEDURE() Error_Procedure,
    ERROR_LINE() Error_Line,
    ERROR_MESSAGE() Error_Message
    END CATCH
    PRINT 'Command after TRY/CATCH blocks'
    最后输出Error Detected
    Err_Num Err_Sev Err_State Err_Proc Err_Line Err_Msg
    ------- ------- --------- -------------------- --------- --------------------------------

  • 相关阅读:
    Java硬件同步机制Swap指令模拟+记录型信号量模拟
    算法(第四版)练习 1.1.26 ~ 1.1.31
    C++ 电路布线/最短路径问题
    线性代数笔记
    算法导论(第三版)练习 2.2-1 ~ 2.2-4
    条款45: 弄清C++在幕后为你所写、所调用的函数
    条款42: 明智地使用私有继承
    条款41: 区分继承和模板
    【python】字符遍历
    【python】range的用法
  • 原文地址:https://www.cnblogs.com/zhangzheny/p/975817.html
Copyright © 2011-2022 走看看