首页 > 数据库 > mysql教程 > 【Oracle篇】异常处理和PLSQL

【Oracle篇】异常处理和PLSQL

WBOY
发布: 2016-06-07 15:13:12
原创
1114 人浏览过

一、所有的PL/SQL异常都具有以下几个基本特征: 错误类型:表示了错误是ORA错误还是PLS错误 错误代号:一串表示错误代号的数字 错误文本:错误消息文本,包括错误代号 二、PL/SQL会产生两种类型的错误 : ORA错误 PLS错误 ORA错误通常是运行时的错误,应该由


一、所有的PL/SQL异常都具有以下几个基本特征:
  错误类型:表示了错误是ORA错误还是PLS错误
  错误代号:一串表示错误代号的数字
  错误文本:错误消息文本,包括错误代号


二、PL/SQL会产生两种类型的错误
  ORA错误
  PLS错误
  ORA错误通常是运行时的错误,应该由程序来处理。
  PLS错误通常是编译错误,应该在执行程序之前进行处理。



--:使用PL/SQL语句块输出99乘法表
--dbms_output.put_line()

declare
    v_i number;
    v_k number;
    v_j number;
begin
   for v_i in 1..9 loop
     v_j:=1;
     while v_j        v_k:=v_i*v_j;
       dbms_output.put_line('v_j'||v_j||'*'||'v_i'||v_i||'='||'v_k'||v_k);
       v_j:=v_j+1;
     end loop;
     dbms_output.put_line(chr(10));
     end loop;
end;
 
--:使用Select ename into v_ename from emp where deptno=&no;
--        出现多行值的异常(TOO_MANY_ROWS),使用异常处理打印错误代码和错误信息;注意最后使用others收尾

declare 
    v_ename emp.ename%type;   
begin 
    select ename into v_ename from emp where deptno=&no;
    dbms_output.put_line('v_ename:'||v_ename);
    
   -- if v_ename = 'chen'
   --   then  dbms_output.put_line('v_ename:'||v_ename);
    --else  
    --    dbms_output.put_line('too_many_rows:'||sqlerrm);
    --end if;
     exception  
       when  TOO_MANY_ROWS then 
         dbms_output.put_line('多值异常'||sqlerrm); 
       when   others then 
         dbms_output.put_line('其他异常');        
end;

--:通过输入的员工编号,使用%rowtype类型定义一个emp表的行类型,并输出员工编号、名字、工资、部门编号。
--       注意处理没有查到数据的异常(no_data_found)

declare 
    v_emp emp%rowtype;   
begin 
    select * into v_emp from emp where empno=&员工编号;
    dbms_output.put_line('v_empno:'||v_emp.empno ||'v_empname:'||v_emp.ename||'v_empsal'||v_emp.sal||'v_empdeptno:'||v_emp.deptno);

     exception
       when no_data_found then
         dbms_output.put_line('异常:没找到数据'||sqlerrm);  
       when   others then 
         dbms_output.put_line('其他异常');        
end;


相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板