说说SQL Server存储过程中的异常处理

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

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

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

1、环境

  1. 数据库为Sql Server2008。
  2. 表(Course)结构为:
    • No char(10) primary key
    • Name varchar(20)
    • Comment varchar(50)

2、存储过程

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

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

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

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

代码如下:

  1. Create proc sp_Insert_Course 
  2.     @No char(10), 
  3.     @Name varchar(20), 
  4.     @Comment varchar(50), 
  5.     @rtn int output 
  6. as 
  7.     begin try 
  8.         insert into Course values(@No,@Name,@Comment) 
  9.         set @rtn=1 
  10.     end try 
  11.     begin catch 
  12.         set @rtn=@@ERROR 
  13.          
  14.         --辅助信息 
  15.         --select ERROR_LINE() as Line, 
  16.         --    ERROR_MESSAGE() as message1, 
  17.         --    ERROR_NUMBER() as number, 
  18.         --    ERROR_PROCEDURE() as proc1, 
  19.         --    ERROR_SEVERITY() as severity, 
  20.         --    ERROR_STATE() as state1 
  21.     end catch 

3、存储过程执行

相关代码如下:

  1. declare 
  2.     @rtn int 
  3. exec sp_Insert_Course '114','语文','',@rtn output 
  4. print @rtn 

执行结果:

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

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

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

4、说明

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

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

希望能够对大家有所帮助。

原文链接:http://www.cnblogs.com/sshoub/archive/2011/08/12/2136267.html

【编辑推荐】

  1. 如何在存储过程中实现插入更新数据
  2. 聊聊树状结构如何在数据库中存储
  3. 开启SQL Server Denali之旅:字段存储索引
  4. 谈谈Java调用SQL Server分页存储过程
责任编辑:艾婧 来源: 博客园
相关推荐

2010-11-12 09:18:13

SQL Server存

2011-08-15 15:14:54

SQL Server存储过程异常处理

2016-09-07 20:28:17

MySQL存储数据库

2010-11-10 15:36:44

SQL Server存

2011-08-15 17:28:19

SQL Server事务处理存储过程

2010-07-15 12:38:14

SQL Server存

2011-03-24 13:38:47

SQL Server 存储分页

2009-08-06 16:44:06

2009-07-23 14:10:38

Hibernate J

2011-04-11 17:28:50

oracle存储select语句

2010-11-10 13:03:15

SQL Server存

2011-04-08 09:53:45

Accesssql server存储翻页

2023-07-07 07:53:26

Python异常处理

2021-02-08 11:04:21

嵌套SQL Server语言

2010-11-12 09:46:55

Sql Server存

2010-09-14 10:16:57

sql server

2010-05-31 16:57:09

2010-04-15 16:54:31

Oracle存储过程

2010-05-27 17:45:13

MySQL存储过程

2011-03-28 10:46:36

sql server存储分页
点赞
收藏

51CTO技术栈公众号