/*
例外(exception):
1.系统定义的例外
2.自定义的例外
系统例外
1.No_data_found 没有找到数据
2.Too_many_rows select ... into语句匹配了多个行
3.Zero_Divide 被零除
4.Value_error 算术或转换错误
5.Timeout_resource 在等待资源时发生超时
*/
--no_data_found
set serveroutput on
declare
pename emp.ename%type;
begin
--没有编号为1234的员工
select ename from emp where empno=1234;
exception
when no_data_found then dbms_output.put_line("没有找到该员工!");
--when ...
when others then dbms_output.put_line("其他例外!");
end;
--to_many_rows
set serveroutput on
declare
pename emp.ename%type;
begin
select ename into pename from emp where deptno = 10;
exception
when too_many_rows then dbms_output.put_line(1);
when others then dbms_output.put_line(2)
end;
--Zero_Divide
--Value_error
--自定义exception
--定义变量,类型是exception
--使用raise 抛出自定义例外
set serveroutput on
declare
cursor cemp is select ename from emp where deptno=123;
pename emp.ename%type;
--自定义exception
no_emp_found exception;
begin
open cemp;
fetch cemp into pename;
if cemp%notfound then
raise no_emp_found;
end if;
--oracle 自动启动pmon调用 关掉光标
close cemp;
exception
when no_emp_found then dbms_output.put_line("没有找到员工");
end;
PL/SQL exception(例外)
最新推荐文章于 2021-04-16 10:07:22 发布