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

    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 
             
            --辅助信息  RAISERROR('Houston,we have a problem',16,1)
            --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)的有点差异,但是基本思想差不多, 在最后捕获都可以得到异常。        
  • 相关阅读:
    C# 深浅复制 MemberwiseClone
    负载均衡算法,轮询方式
    大话设计模式之工厂模式 C#
    大话设计模式:代理模式 C#
    C# 单元测试
    【前端安全】JavaScript防http劫持与XSS
    神秘的 shadow-dom 浅析
    【CSS进阶】伪元素的妙用2
    【CSS进阶】CSS 颜色体系详解
    【CSS进阶】box-shadow 与 filter:drop-shadow 详解及奇技淫巧
  • 原文地址:https://www.cnblogs.com/slmdr9/p/6410743.html
Copyright © 2011-2022 走看看