服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

讲解oracle数据库自定义异常的使用方法

【赛迪网-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到前台

扫描关注微信公众号