北大青鸟oracle学习笔记18
来源:互联网 发布:程序员起个网名 编辑:程序博客网 时间:2024/05/29 08:30
异常
预定义异常
oracle为常见错误预定义
在DBMS_STANDARD程序包中提供了这些定义
不需要显示声明
declare
sex student.stu_sex%type;
begin
select stu_sex into sex from student;
dbms_output.put_line('sex:'||sex);
exception
when no_data_found then
dbms_output.put_line('no such student!');
when too_many_rows then
dbms_output.put_line('too many rows selected!');
when others then
dbms_output.put_line('other error!');
end;
用户自定义异常
声明类型为Exception类型
只能主动由raise抛出
declare
Dup_Value Exception;
icount int := 0;
begin
select count(*) into icount from student;
if icount > 0 then
raise Dup_Value;
end if;
exception
when Dup_Value then
dbms_output.put_line('the student is already existed!') ;
when others then
dbms_output.put_line('other error!');
end;
但是这里异常只能由raise抛出,若要在插入重复字段是返回自定义提示信息,需要使用编译指示
declare
Dup_Value Exception;
pragma Exception_init(Dup_Value,-1);
begin
insert into student values('1','1','1',sysdate);
exception
when Dup_Value then
dbms_output.put_line('the student is already existed!') ;
when others then
dbms_output.put_line('other error!');
end;
pragma Exception_init(Dup_Value,-1); 这里后面一个参数是oracle错误代码ORA-00001
查询预定义异常,可以得知自定义异常方法
select text from dba_source where name='STANDARD' and text like '%EXCEPTION_INIT%';
TEXT
----------------------------------------------------------------
pragma EXCEPTION_INIT(CURSOR_ALREADY_OPEN, '-6511');
pragma EXCEPTION_INIT(DUP_VAL_ON_INDEX, '-0001');
pragma EXCEPTION_INIT(TIMEOUT_ON_RESOURCE, '-0051');
pragma EXCEPTION_INIT(INVALID_CURSOR, '-1001');
pragma EXCEPTION_INIT(NOT_LOGGED_ON, '-1012');
pragma EXCEPTION_INIT(LOGIN_DENIED, '-1017');
pragma EXCEPTION_INIT(NO_DATA_FOUND, 100);
pragma EXCEPTION_INIT(ZERO_DIVIDE, '-1476');
pragma EXCEPTION_INIT(INVALID_NUMBER, '-1722');
pragma EXCEPTION_INIT(TOO_MANY_ROWS, '-1422');
pragma EXCEPTION_INIT(STORAGE_ERROR, '-6500');
pragma EXCEPTION_INIT(PROGRAM_ERROR, '-6501');
pragma EXCEPTION_INIT(VALUE_ERROR, '-6502');
pragma EXCEPTION_INIT(ACCESS_INTO_NULL, '-6530');
pragma EXCEPTION_INIT(COLLECTION_IS_NULL , '-6531');
pragma EXCEPTION_INIT(SUBSCRIPT_OUTSIDE_LIMIT,'-6532');
pragma EXCEPTION_INIT(SUBSCRIPT_BEYOND_COUNT ,'-6533');
pragma EXCEPTION_INIT(ROWTYPE_MISMATCH, '-6504');
pragma EXCEPTION_INIT(SYS_INVALID_ROWID, '-1410');
pragma EXCEPTION_INIT(SELF_IS_NULL, '-30625');
pragma EXCEPTION_INIT(CASE_NOT_FOUND, '-6592');
pragma EXCEPTION_INIT(USERENV_COMMITSCN_ERROR, '-1725');
pragma EXCEPTION_INIT(NO_DATA_NEEDED, '-6548');
pragma EXCEPTION_INIT(INVALID_USERENV_PARAMETER, -2003);
pragma EXCEPTION_INIT(ICD_UNABLE_TO_COMPUTE, -6594);
25 rows selected.
Raise_Application_Error(错误编号,'提示信息');
用于创建用户自定义的错误消息的过程
将应用程序专有的错误从服务器端转达到客户端应用程序
既可以在可执行部分中使用,也可以在异常部分中使用
错误编号必须介于-20000~-20999之间
错误消息的长度可长达2048个字节
declare
Dup_Value Exception;
pragma Exception_init(Dup_Value,-1);
begin
insert into student values('1','1','1',sysdate);
exception
when Dup_Value then
raise_application_error(-20001,'the student is already existed!');
when others then
dbms_output.put_line('other error!');
end;
Error report:
ORA-20001: the student is already existed!
ORA-06512: 在 line 8
- 北大青鸟oracle学习笔记18
- 北大青鸟oracle学习笔记1~2
- 北大青鸟oracle学习笔记3
- 北大青鸟oracle学习笔记4 5
- 北大青鸟oracle学习笔记6
- 北大青鸟oracle学习笔记7
- 北大青鸟oracle学习笔记8 9
- 北大青鸟oracle学习笔记10
- 北大青鸟oracle学习笔记11
- 北大青鸟oracle学习笔记12
- 北大青鸟oracle学习笔记13
- 北大青鸟oracle学习笔记14 15
- 北大青鸟oracle学习笔记16
- 北大青鸟oracle学习笔记17
- 北大青鸟oracle学习笔记23 24
- 北大青鸟oracle学习笔记25
- 北大青鸟oracle学习笔记29 30
- 北大青鸟oracle学习笔记31
- HTML中单元格合并
- 人月神话-胸有成竹
- 物理化学发展的瓶颈与思路论坛——论文目录
- 瓦楞机的设计
- C 学习笔记: 移位操作练习。
- 北大青鸟oracle学习笔记18
- 人月神话-削足适履和提纲挈领
- 四十以后一定要明白
- 张孝详javascript讲座笔记六(结局篇)
- ubuntu下安装svn,eclipse安装subverison插件
- 人月神话-未雨绸缪和干将莫邪
- 敏捷方法中测试人员的价值?
- 加油加油。
- 我来啊 哈哈