美文网首页
例外的概念和系统例外

例外的概念和系统例外

作者: somertsm | 来源:发表于2017-07-09 11:00 被阅读0次

例外

  • 例外是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性。

ORACLE 中的例外

  • 系统例外

  • 自定义例外

系统例外

  • No_data_found (没有找到数据)
  • Too_many_rows (select..into语句匹配多个行)
  • Zero_Divide (被零除)
  • Value_error (算术或转换错误)
  • Timeout_on_resource (在等待资源时发生超时)

No_data_found 案例

--系统例外:no_data_found
SET SERVEROUTPUT ON

DECLARE
 pe_first_name EMPLOYEES.FIRST_NAME%TYPE;
 pe_last_name EMPLOYEES.LAST_NAME%TYPE;
 
BEGIN
 --查询员工号是1234的员工姓名
 select first_name,last_name into pe_first_name,pe_last_name from EMPLOYEES where EMPLOYEE_ID=1234;

exception
 when no_data_found then DBMS_OUTPUT.PUT_LINE('没有找到该员工');
 when others then DBMS_OUTPUT.PUT_LINE('其他例外');
end;
/
 

Too_many_rows 案例

--系统例外:too_many_rows
SET SERVEROUTPUT ON

DECLARE
 --定义变量
 pe_first_name EMPLOYEES.FIRST_NAME%TYPE;
 pe_last_name EMPLOYEES.LAST_NAME%TYPE;
 
BEGIN
 select first_name,last_name into pe_first_name,pe_last_name from EMPLOYEES where DEPARTMENT_ID=60;

exception
 when too_many_rows then DBMS_OUTPUT.PUT_LINE('selectinto 匹配了多行');
 
 when others then DBMS_OUTPUT.PUT_LINE('其他例外');
end;
/

Zero_Divide 案例

--系统例外:被0除 zero_divide
SET SERVEROUTPUT ON

DECLARE
 --定义变量
 pnum number;
 
BEGIN
 pnum := 1/0;
exception
 when zero_divide then DBMS_OUTPUT.PUT_LINE('1:0不能做除数');
                       DBMS_OUTPUT.PUT_LINE('2:0不能做除数');
 when others then DBMS_OUTPUT.PUT_LINE('其他例外');
end;
/
 

value_error 案例

--系统例外:value_error
SET SERVEROUTPUT ON

DECLARE
 --定义变量
 pnum number;
 
BEGIN
 pnum := 'abc';
exception
 when value_error then DBMS_OUTPUT.PUT_LINE('算术或者转换错误');
 when others then DBMS_OUTPUT.PUT_LINE('其他例外');
end;
/
 

自定义例外

  • 定义变量,类型是exception
  • 使用raise抛出自定义例外
--自定义例外:查询50号部门的员工的姓名
SET SERVEROUTPUT ON

DECLARE
 --定义光标,代表50号部门的员工姓名
 cursor cemp is select first_name,last_name from EMPLOYEES where DEPARTMENT_ID = 300;
 
 pe_first_name EMPLOYEES.first_name%type;
 pe_last_name EMPLOYEES.LAST_NAME%TYPE;
 
 --自定义例外
 no_emp_found EXCEPTION;
BEGIN
 --打开光标
 open cemp;
 
 --直接取一个员工的姓名
 FETCH cemp into pe_first_name,pe_last_name;
 
 if cemp%notfound then
    --抛出例外
    raise no_emp_found;
 end if;
  
 --关闭光标
 --oracle会自动启动pmon(process monitor) 关闭光标
 close cemp;
exception
 when no_emp_found then DBMS_OUTPUT.PUT_LINE('没有找到员工');
 when others then DBMS_OUTPUT.PUT_LINE('其他例外');
end;
/
 

相关文章

  • 例外的概念和系统例外

    例外 例外是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性。 ORACLE 中的例外 系统例外 自定义例...

  • 有意例外和随机例外

    中原焦点团队张红,持续分享1760天,2022年5月21日 当例外已经发生,你需要注意是谁做了什么让例外得以发生。...

  • 偏爱和例外

    曾经的我努力奔跑 想成为独一无二且无可替代的存在 现在的我拼命寻找 值得我视作偏爱和例外的唯一存在 曾经渴望 旗鼓...

  • 例外和偏爱

    我到底要怎么做才能够被你偏爱 是否情话要足够动听才能叫例外 而你置身事外 不动声色就将我击败 现在的歌词都这么写实...

  • 例外

    大概是因为爱了,什么都开始例外了。 十点钟准时关灯睡觉变成了拿着手机手指不停的打着键盘,偶尔停下还会悄悄傻笑...

  • 例外

    奇怪 难道你是个例外? 面对你 我的原则仿佛全然不存在 我多介意不问自取 不请自来 可如果那是你 我就讨厌不起来;...

  • 例外

    郭芳艳 焦点网络初级五期 坚持原创分享第456天 例外是问题解决之道的重要成分,或是形成解决方法的发酵素...

  • 例外

    戒嗔所住的淼镇有位卖水果的蔡施主,他在小镇中心位置的小街上经营着小镇里最大的一家水果摊。蔡施主的口才很好,不管对象...

  • 例外

    例外,这两个字每个人都真正的感受过 全班考试就我一人没及格,老师说我例外 偷东西就我一个人被抓到,伙伴说就我例外 ...

  • 例外

    曾经很多次的以为自己找到了归属,可是事实却是喜欢不经意的给人你一刀,当时的我一直不明白这是为什么?直到今天我才知道...

网友评论

      本文标题:例外的概念和系统例外

      本文链接:https://www.haomeiwen.com/subject/wieshxtx.html