Oracle 预定义错误

本文介绍Oracle数据库中PL/SQL的错误处理方法,包括常见错误代码及其含义、如何使用SQLCODE和SQLERRM获取错误信息,以及如何利用RAISE_APPLICATION_ERROR自定义错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

begin

dbms_output.put_line(sqlerrm(-00001));

end;

ORA-00001: 违反唯一约束条件 (.)

ORA-00051: 等待资源超时

ORA-00061: 另一个例程设置了不同的 DML_LOCKS

ORA-00900: 无效 SQL 语句

ORA-01001: 无效的游标

ORA-01012: 没有登录

ORA-01017: 无效的用户名/口令;拒绝登录

ORA-01403: 未找到数据

ORA-01422: 实际返回的行数超出请求的行数

ORA-01426: 数字溢出

ORA-01476: 除数为 0

ORA-01722: 无效数字

ORA-06500: PL/SQL: 存储错误

ORA-06501: PL/SQL: 程序错误

ORA-06502: PL/SQL: 数字或值错误

ORA-06504: PL/SQL: 结果集变量或查询的返回类型不匹配

ORA-06511: PL/SQL: 游标已经打开

ORA-06530: 引用未初始化的组合

ORA-06531: 引用未初始化的收集

ORA-06532: 下标超出限制

ORA-06533: 下标超出数量

ORA-06575: 程序包或函数  处于无效状态

1.SQLCODE 用于返回错误号

2.SQLErrm 用于返回错误消息 e.g exec dbms_output.put_line(sqlerrm(-00001))

这两个函数在例外处理部分的WHEN OTHERS子句后引用这两个函数,可以获取Oracle的错误号,错误消息.

3.raise_application_error

该过程用于在PL/SQL中自定义错误小,他必须在数据库端的子程序(过程,函数,包,触发器)中使用,不能在匿名块呵客户端子程序中使用,语法:

raise_application_error(error_number,message[,{TRUE|FALSE}]);

其中

error_number 用于定义错误号,该错误号必须在-20000到-20999之间;

message      用于指定错误号消息,长度小于2048字节

第三个参数可选

True         该错误会被放到先前错误堆栈中

false        会替换先前所有错误--用一循环打印所有oracle错误

Declare

  v_int integer:=1;

--语句块开始

Begin

  --循环开始

  For v_int in 1..1000 loop

      Begin

        --屏幕输出

        if length(sqlerrm(-v_int))<=61 then

    dbms_output.put_line(sqlerrm(-v_int));

        end if;

      

      end;

  end loop;

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值