您好,欢迎访问一九零五行业门户网

【Oracle篇】异常处理和PLSQL

一、所有的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;
其它类似信息

推荐信息