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;