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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/NextAction/article/details/89021385

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;

猜你喜欢

转载自blog.csdn.net/NextAction/article/details/89021385
今日推荐