以下plsql程序用的scott用户的dept,emp表。
not_data_found例外:
--系统列外
set serveroutput on
declare
pename emp.ename%type;
begin
select ename into pename from emp where empno =1234;
exception
when no_data_found then dbms_output.put_line('没有查到数据');
when others then dbms_output.put_line('其他');
end;
/
too_many_rows例外:
1 --系统例外: too_many_rows
2
3 set serveroutput on
4 declare
5
6 pename emp.ename%type;
7
8 begin
9
10 select ename into pename from emp where deptno = 10;
11
12 exception
13 when too_many_rows then dbms_output.put_line('select into 匹配多行');
14 when others then dbms_output.put_line('其他');
15 end;
16 /
算数或转换例外:
1 --系统例外 : value_error
2
3 set serveroutput on
4
5 declare
6
7 pnum number;
8 begin
9 pnum := 'abc';
10
11 exception
12 when value_error then dbms_output.put_line('算术或转换错误');
13 when others then dbms_output.put_line('其他');
14 end;
15 /
0不能做除数例外:
1 --系统例外 zero_divide
2 set serveroutput on
3
4 declare
5
6 pnum number;
7 begin
8
9 pnum := 1/0;
10
11 exception
12 when zero_divide then dbms_output.put_line('0不能做除数');
13 when others then dbms_output.put_line('其他');
14 end;
15 /
自定义例外:
--自定义例外:
set serveroutput on
declare
cursor cemp is select ename from emp where deptno =50;
pename emp.ename%type;
--自定义列外
not_emp_data exception;
begin
open cemp;
fetch cemp into pename;
if cemp%notfound then
raise not_emp_data;
end if;
--如果程序程序中出现例外,oracle会通过pmon(process monitor)自动关闭清理资源
close cemp;
exception
when not_emp_data then dbms_output.put_line('自定义例外:没有查询到数据');
when others then dbms_output.put_line('其他列外');
end;
/
知识点出处:http://www.imooc.com/learn/360