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

      编程的异常处理很重要,当然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)的有点差异,但是基本思想差不多, 在最后捕获都可以得到异常。
  • 相关阅读:
    TFS 2015(Visual Studio Team Foundation Server)的下载和安装
    又回来了
    java.net.SocketException:Too many open files 解决方案
    Java 正则判断一个字符串中是否包含中文
    zabbix 启动报错 cannot set resource limit: [13] Permission denied
    MySQL 查询某个数据库中所有包含数据记录的表名
    MySQL 判断数据库和数据表是否存在
    Java 实现 bash命令
    Java 实现 ssh命令 登录主机执行shell命令
    Java 实现 telnet命令 验证主机端口的连通性
  • 原文地址:https://www.cnblogs.com/Fashion/p/3272740.html
Copyright © 2011-2022 走看看