网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  讲解oracle数据库自定义异常的使用方法     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:78次  录入:管理员--2008-04-15  
 

【赛迪网-it技术报道】需求:业务逻辑在处理数据时,需要返回message并阻止程序的继续运行。但是,在存储过程使用oracle数据库的raise根本无法满足现在的要求。

解决方法:

使用raise_application_error

raise_application_error ( error_number_in in number, error_msg_in in varchar2);

error_number: 自定义的错误编号。

error_msg:自定义的错误内容。

在使用的过程中,你可能会遇到了下面的问题。

ora-21000: error number argument to raise_application_error of [xxxx] is out of range

出现此错误的原因如下:

在存储过程中定义的错误代码number其实并不在oracle数据库所允许的范围之内。因为oracle数据库允许自定义的错误代码的范围是-20000 -- -20999

这样,就在java端可以通过sqlexception来捕获异常。

虽然通过sqlexception.getmessage()可以捕获到异常的内容,但是这些内容对于开发比较有用。对于客户来说,并不友好,也没有多大意义。

通过sqlexception.geterrorcode()可以捕获到自定义的异常错误编号。然后我们就可以通过这个错误编号,自定义相应的message内容,返回给客户。

下面我们来介绍另一种解决方法:

通过存储过程返回值,你可以直接把错误message定义在返回值中间。在java端解析后,可以直接取得message代码。

示例如下:

if condition then

p_result := 'err:msg2061';

end if;

if substr(p_result, 1, 3) = 'err' then

rollback;

else

p_result = 'ok';

end if;

java:略去中间的调用存储过程的步骤

if(result != null && result.startswith("err:"))

// 从result中解析出message_id,显示message到前台

 
 
上一篇: for loop读取游标和open close的区别    下一篇: 实例讲解ora-12514和ora-12514解决方法
  相关文档
如何使用new_value将查询结果传递给变量 04-10
教你快速掌握oracle 9i数据库的移动过程 11-15
oracle数据库exp/imp版本的支持列表集合 05-28
不通过"lower"等函数查询大小写的内容 02-25
深入讲解vb与oracle数据库的日期转换 02-29
深入讲解redo log file损坏的处理过程 (1) 03-07
通过几个步骤有效关闭oracle死锁进程 04-18
Oracle *Graphics中不同类型图形的切换 09-01
深入分析"oracle"并行处理的技术原理 (1) 02-01
oracle 10g分区表维护中的两个注意事项 04-30
vb与Oracle 数据库中的日期转换 09-29
深入探讨如何解决数据库中的死锁问题 04-08
使用type方式,解决in列表过长的问题 (1) 02-27
教你轻松掌握如何把数据导入不同的表空间 11-15
如何使用ref cursor处理oracle的结果集 03-26
statspack监控管理:定期清除1个月的数据 02-28
Oracle安全性管理采取的基本措施简介 04-12
Oracle 11g 新版数据库新增400余项技术 09-01
深入讲解"alert log"过大时的处理方法 03-14
讲解oracle中job与存储过程的接合用法 03-13
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息