zoukankan      html  css  js  c++  java
  • SQL Server存储过程中的异常处理

    编程的异常处理很重要,当然Sql语句中存储过程的异常处理也很重要,明确的异常提示能够快速的找到问题的根源,节省很多时间……

      编程的异常处理很重要,当然Sql语句中存储过程的异常处理也很重要,明确的异常提示能够快速的找到问题的根源,节省很多时间。

      下面,我就以一个插入数据为例来说明Sql Server中的存储过程怎么捕获异常的 。

      1、环境

      数据库为Sql Server2008。

      表(Course)结构为:

      No char(10) primary key

      Name varchar(20)

      Comment varchar(50)

      2、存储过程

      就以插入数据为例,其他的可以照着写就行了。

      编程语言都有异常的捕获与处理, 在 SqlServer2008 中也是这样子的。

      对会出现异常的语句加上 begin try……end try ,然后进行异常捕捉:begin catch……end catch即可。

      错误代码详解 很容易就能找到。

      代码如下:

    以下是代码片段:

    Create proc sp_Insert_Course
    @No char(10),
    @Name varchar(20),
    @Comment varchar(50),
    @rtn int output
    as
    begin try
    insert into Course values(@No,@Name,@Comment)
    set @rtn=1
    end try
    begin catch
    set @rtn=@@ERROR

    --辅助信息
    --select ERROR_LINE() as Line,
    -- ERROR_MESSAGE() as message1,
    -- ERROR_NUMBER() as number,
    -- ERROR_PROCEDURE() as proc1,
    -- ERROR_SEVERITY() as severity,
    -- ERROR_STATE() as state1
    end catch

      3、存储过程执行

      相关代码如下:

    以下是代码片段:

    declare
    @rtn int
    exec sp_Insert_Course '114','语文','',@rtn output
    print @rtn

      执行结果:

      正常的情况下,返回值为1,

      如果已经存在编号为“114”的数据,就会返回 ERROR_CODE:2627,

      其他的异常情况会返回相应的代码

      4、说明

      如果程序有异常,把异常代码返回,然后再进行相关的处理即可。

      SQL Server中的异常处理和别的数据库(如Oracle)的有点差异,但是基本思想差不多, 在最后捕获都可以得到异常。

  • 相关阅读:
    有return的情况下try_catch_finally的执行顺序
    java异常处理之try_catch_finally
    乔布简历
    策略模式--经典详细分析
    观察者模式(Observer Pattern)(二):HeadFirst中的气象站的实现
    luogu2444 [POI2000]病毒
    bzoj3172 luogu3966 [TJOI2013]单词
    luogu3808 luogu3796 AC自动机(简单版) AC自动机(加强版)
    vijos1459 车展
    poj2985 The k-th Largest Group
  • 原文地址:https://www.cnblogs.com/zcm123/p/2876081.html
Copyright © 2011-2022 走看看