SQL Server存储过程中的异常处理
2013-01-25 10:08
274 查看
编程的异常处理很重要,当然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即可。
错误代码详解 很容易就能找到。
代码如下:
3、存储过程执行
相关代码如下:
执行结果:
正常的情况下,返回值为1,
如果已经存在编号为“114”的数据,就会返回 ERROR_CODE:2627,
其他的异常情况会返回相应的代码
4、说明
如果程序有异常,把异常代码返回,然后再进行相关的处理即可。
SQL Server中的异常处理和别的数据库(如Oracle)的有点差异,但是基本思想差不多, 在最后捕获都可以得到异常。
编程的异常处理很重要,当然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 |
相关代码如下:
以下是代码片段: declare @rtn int exec sp_Insert_Course '114','语文','',@rtn output print @rtn |
正常的情况下,返回值为1,
如果已经存在编号为“114”的数据,就会返回 ERROR_CODE:2627,
其他的异常情况会返回相应的代码
4、说明
如果程序有异常,把异常代码返回,然后再进行相关的处理即可。
SQL Server中的异常处理和别的数据库(如Oracle)的有点差异,但是基本思想差不多, 在最后捕获都可以得到异常。
相关文章推荐
- sql server 存储过程事务与异常处理的一般方式
- SQL Server存储过程定义的几个最大值
- sql server之触发器调用C#CLR存储过程实现两个表的数据同步
- SQL Server查询数据库所有存储过程、触发器、索引信息SQL分享
- Sql Server 数据库引擎实用存储过程
- 用C#创建SQL Server的存储过程
- Java调用SQL Server的存储过程详解
- 解密SQL Server 2005中被加密的存储过程、函数、视图、触发器
- SQL Server中利用存储过程来高性能地进行分页
- 关于SQL Server中几个未公布的访问注册表的扩展存储过程
- SQL Server 存储过程的分页
- sql server 2008 存储过程排序记录
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- SQL SERVER 存储过程基础集
- SQL Server下几个危险的扩展存储过程
- SQL Server 存储过程中的表变量名加上'[]'后出现执行错误
- 在SQL SERVER 2005存储过程中,使用循环语句
- SQL Server创建存储过程——动态SQL
- 调试SQL Server的存储过程及用户定义函数
- sql server 清理日志存储过程