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)的有点差异,但是基本思想差不多, 在最后捕获都可以得到异常。 希望能够对大家有所帮助。 原文链接:http://www.cnblogs.com/sshoub/archive/2011/08/12/2136267.html 另外一个例子 : 过程不输出错误。
---------------------------------------------- P_Insert_New_BookTitle_2K ---------------------------------------------- create proc P_Insert_New_BookTitle_2K
(@TitleName nvarchar(128),
@Price money,
@au_fname nvarchar(32),
@au_name nvarchar(64),
@CommissionRating int)
as declare @err int,
@tablename sysname begin transaction insert dbo.Titles (TitleName, Price)
values (@TitleName, @Price) select @err = @@error
if @err <> 0
begin
select @tablename = 'titles'
GOTO ERROR_HANDLER
end insert dbo.Authors (au_fname, au_lname, TitleID, CommissionRating)
values (@au_fname, @au_fname, @@IDENTITY, @CommissionRating) if @err <> 0
begin
select @tablename = 'authhors'
GOTO ERROR_HANDLER
end GOTO EXIT_Proc ERROR_HANDLER: ROLLBACK TRANSACTION -- Log the error
insert dbo.Application_Error_Log (tableName, UserName, errorNumber, errorSeverity, errorState)
values (@tableName, suser_sname(), @err, 0, 0) EXIT_Proc: commit tran
sql存储过程异常捕获并输出例子还有不输出过程里面判断异常 例子的更多相关文章
- Ionic2中腾讯Bugly异常捕获以及上报
Ionic2混合开发,入坑系列:Ionic2中腾讯Bugly异常捕获以及上报 1.Ionic2中处理全局异常,直接继承IonicErrorHandler即可,代码如下 import { IonicEr ...
- 存储过程——异常捕获&打印异常信息
目录 0. 背景说明 1. 建立异常信息表ErrorLog 2. 建立保存异常信息的存储过程 3. 建立在SQL Server中打印异常信息的存储过程 4. 建立一个用于测试的存储过程抛出异常进行测试 ...
- sql存储过程几个简单例子
导读:sql存储是数据库操作过程中比较重要的一个环节,对于一些初学者来说也是比较抽象难理解的,本文我将通过几个实例来解析数据库中的sql存储过程,这样就将抽象的事物形象化,比较容易理解. 例1: cr ...
- PL/SQL存储过程编程
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...
- C# 异常捕获机制(Try Catch Finally)
一.C#的异常处理所用到关键字 try 用于检查发生的异常,并帮助发送任何可能的异常. catch 以控制权更大的方式处理错误,可以有多个catch子句. finally 无论是否引发了异常,fina ...
- SQL 存储过程入门(事务)(四)
SQL 存储过程入门(事务)(四) 本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我 ...
- SQLServer异常捕获
在SQLserver数据库中,如果有很多存储过程的时候,我们会使用动态SQL进行存储过程调用存储过程,这时候,很可能在某个环节就出错了,但是出错了我们很难去跟踪到出错的存储过程,此时我们就可以使用异常 ...
- T-SQL编程中的异常处理-异常捕获(catch)与抛出异常(throw)
本文出处: http://www.cnblogs.com/wy123/p/6743515.html T-SQL编程与应用程序一样,都有异常处理机制,比如异常的捕获与异常的抛出,本文简单介绍异常捕获与异 ...
- SQL存储过程和函数
SQL存储过程: 由来:在具体应用中,一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句.因此,mysql提供了数据库对象存储过程和函数. 定 ...
随机推荐
- mysql开发小结
目录 1. 使用mybatis操作mysql数据库SUM方法返回NULL解决 2. limit m,n 1. 使用mybatis操作mysql数据库SUM方法返回NULL解决解决方案一: SELECT ...
- Linux第03天
Linux 第03天 1.Linux帐号和ACL权限管理 1.帐号和用户组 1.1 用户标识符————UID(root为0 系统用户为1~499 普通用户为500~65535) 1.2 用户组标识符— ...
- python下编译py成pyc和pyo
python下编译py成pyc和pyo 其实很简单, 用 python -m py_compile file.py python -m py_compile /root/src/{file1,f ...
- DNS域名解析过程
图1-10是DNS域名解析的主要请求过程实例图. 如图1-10所示,当一个用户在浏览器中输入www.abc.com时,DNS解析将会有将近10个步骤,这个过程大体描述如下.当用户在浏览器中输入域名并按 ...
- 第八章 springboot + mybatis + 多数据源
http://www.cnblogs.com/java-zhao/p/5413845.html
- Android -- 使用图库文件并可以裁剪文件(ImageView)
1. 本例子首先教大家如何打开图库 ,然后在使用裁剪功能,来裁剪图库里面的图片并进行显示工作
- Android -- 自动完成文本框(可以匹配多个值,并以,结尾)
1.
- 实现倒计时功能js
<p>系统将会在<strong id="endtime"></strong>秒后跳转到登录页!</p> [原生js实现] <s ...
- XMLHttpRequest对象用法
xmlhttprequest is what? 用户后台与服务器交换数据. 可以在不重新加载页面的情况下更新网页: 在页面已加载后从服务器请求数据: 在页面已加载后从服务器接收数据: 在后台向服务器发 ...
- HDU3371 最小生成树
Connect the Cities Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...