加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle存储过程的异常处理

发布时间:2020-12-12 13:26:36 所属栏目:百科 来源:网络整理
导读:1、为了提高存储过程的健壮性,避免运行错误,当建立存储过程时应包含异常处理部分。 2、异常(EXCEPTION)是一种PL/SQL标识符,包括预定义异常、非预定义异常和自定义异常; 3、预定义异常是指由PL/SQL提供的系统异常;非预定义异常用于处理与预定义异常无关

1、为了提高存储过程的健壮性,避免运行错误,当建立存储过程时应包含异常处理部分。

2、异常(EXCEPTION)是一种PL/SQL标识符,包括预定义异常、非预定义异常和自定义异常;

3、预定义异常是指由PL/SQL提供的系统异常;非预定义异常用于处理与预定义异常无关的Oracle错误(如完整性约束等);自定义异常用于处理与Oracle错误的其他异常情况。

4、RAISE_APPLICATION_ERROR用于自定义错误消息,并且消息号必须在-20000~-20999之间

? ? ? ? ? ? ? ? ?

命名的系统异常 ? ?产生原因?

access_into_null ? 未定义对象?

case_not_found ? ?case中若未包含相应的when,并且没有设置?

collection_is_null ? 集合元素未初始化?

curser_already_open ? 游标已经打开?

dup_val_on_index ? 唯一索引对应的列上有重复的值?

invalid_cursor ? ?在不合法的游标上进行操作?

invalid_number ? ?内嵌的 sql 语句不能将字符转换为数字 ?

no_data_found ? ?使用 select into 未返回行,或应用索引表未初始化的 ?

too_many_rows ? ?执行 select into 时,结果集超过一行?

zero_divide ? ?除数为 0?

subscript_beyond_count ? 元素下标超过嵌套表或varray的最大值?

subscript_outside_limit ? 使用嵌套表或 varray 时,将下标指定为负数?

value_error ? ?赋值时,变量长度不足以容纳实际数据?

login_denied ? ?pl/sql 应用程序连接到 oracle 数据库时,提供了不正确的用户名或密码 ? ? ?确的用户名或密码?

not_logged_on ? ?pl/sql 应用程序在没有连接 oralce 数据库的情况下访问数据 ? ? ?问数据?

program_error ? ?pl/sql 内部问题,可能需要重装数据字典& pl./sql系统包 ? ? 统包?

rowtype_mismatch ? ? ? ? ?主游标变量与 pl/sql 游标变量的返回类型不兼容?

self_is_null ? ?使用对象类型时,在 null 对象上调用对象方法?

storage_error ? ?运行 pl/sql 时,超出内存空间?

sys_invalid_id ? ?无效的 rowid 字符串?

timeout_on_resource ? oracle 在等待资源时超时

? ? ? ?

? ? ? ? ? ?

?

?

--自定义异常处理

CREATE OR REPLACE PROCEDURE stu_proc

(

--多个用逗号隔开

? v_id IN NUMBER

) IS

--多个用分号隔开

? v_max_id NUMBER;

? v_name VARCHAR2(20);

? v_raise EXCEPTION;?

BEGIN

SELECT MAX(a.id) INTO v_max_id FROM student a;

IF v_id>v_max_id THEN

? ? RAISE v_raise;

END IF;

SELECT o.sname INTO v_name FROM student o WHERE o.id=v_id;

? dbms_output.put_line(‘学生名称为:‘||v_name);

EXCEPTION

WHEN v_raise THEN?

? ? RAISE_APPLICATION_ERROR(-20010,‘v_id not exists!‘);

WHEN NO_DATA_FOUND THEN?

? ? RAISE_APPLICATION_ERROR(-20011,‘ERROR:不存在!‘);

END stu_proc;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读