Rumah >pangkalan data >tutorial mysql >【Oracle篇】异常处理和PLSQL

【Oracle篇】异常处理和PLSQL

WBOY
WBOYasal
2016-06-07 15:13:121116semak imbas

一、所有的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;


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn