【EXCEPTION_INIT】自定义错误名称并关联错误号

EXCEPTION_INIT可以把自定的错误名称和Oracle内部错误号关联起来,这样就可以在程序异常处理部分按错误名称抛出异常。

需要注意,EXCEPTION_INIT命令必须在声明部分定义。下面是一个例子:

dept_bak表的deptno字段时number类型,长度为2,如果向的deptno中插入一个过长字段,比如9999,就会报错:

ORA-01438:value larger than specified precision allowed for this column.

为了代码的可读性,此处可以定义名为invalid_deptno的异常,当输入过长字段时把错误的数据插入到dept_t表中,下面是代码:

CREATE OR REPLACE PROCEDURE test_ins (p_deptno NUMBER,
                                      p_deptname VARCHAR2,
                                      p_loc VARCHAR2)
IS 
   invalid_deptno EXCEPTION;
   PRAGMA exception_init(invalid_deptno,-1438);
BEGIN
  INSERT INTO dept_bak VALUES (p_deptno,p_deptname,p_loc);
  COMMIT;
EXCEPTION
  WHEN invalid_deptno THEN
    INSERT INTO dept_t VALUES (p_deptno,p_deptname,p_loc);
    COMMIT;
END test_ins;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值