ORACLE 用户自定义异常

1CREATE OR REPLACE PROCEDURE test_Exception_byLeejin
2(
3 ParameterA IN varchar2,
4 ParameterB IN varchar2,
5 ErrorCode OUT varchar2 --返回值,错误编码
6)
7AS
8 /*以下是一些变量的定义*/
9 V1 NUMBER;
10 V2 nvarchar2(20);
11 V3 NUMBER;
12 APP_EXP EXCEPTION; --自定义异常
13BEGIN
14 ErrorCode :='';
15 IF (ParameterA=ParameterB) THEN
16 ErrorCode := 'ParameterA = ParameterB';
17 RAISE APP_EXP; -- 抛出异常
18 END IF;
19EXCEPTION
20 WHEN APP_EXP THEN --在处理异常
21 RAISE_APPLICATION_ERROR(-20001,ErrorCode);
22 WHEN OTHERS THEN
23 RAISE_APPLICATION_ERROR(-20001,'未知异常');
24 END;

如果需要放回message 并中断程序继续进行,则可以使用:

RAISE_APPLICATION_ERROR(-20001,ErrorCode);

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

虽然通过SQLException.getMessage()可以捕获到异常的内容,但是这些内容对于开发比较有用。对于客户来说,并不友好,也没有多大意义。 通过SQLException.getErrorCode()可以捕获到自定义的异常错误编号。然后就可以,通过这个错误编号,自定义相应的Message内容,返回给客户了。

注意:oracle允许自定义的错误代码的范围为-20000 -- -20999

在使用过程中,遇到了下面的问题。
ORA-21000: error number argument to raise_application_error of [xxxx] is out of range出现这个错误的原因是:在存储过程中定义的错误代码Number不在Oracle所允许的范围之内。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值