orcle学习总结------exception

-异常:自定义异常和预定义异常
--异常:程序运行过程中出现的错误
--预定义异常:too_many_rows,no_data_found,value_error,others...
--too_many_rows,//返回太多的行数
--sqlcode//异常编号
--sqlerrm//异常信息
--raise_application_error(age1,age2);//age1代表自定义异常编号取值范围(-20000到-20999)//age2代表自定义的异常信息


--自定义异常
--自定义异常的步骤:定义异常--》抛出异常--》处理或者捕获异常




declare
--定义异常
genderError exception;
gender char(3);
begin 
gender := '&input';
 --定义抛异常时机
 if gender not in('男','女') then
   raise genderError;--抛出异常
   end if;
dbms_output.put_line('sex-->' || gender);
exception  
 when genderError then
   dbms_output.put_line('性别输入异常');
  raise_application_error(-20777,'性别输入有误');
end;




declare 
v_sal emp.sal%type;
v_empno emp.empno%type;
salError exception;
begin 
  select sal into v_sal from emp where empno ='&no';
  if v_sal < 1000 or v_sal >= 5000 then 
    raise salError;
    end if;
     dbms_output.put_line(v_sal);
exception
  when salError then
  dbms_output.put_line('薪资异常');
  
  raise_application_error(-20336,'薪资异常');
end;




--exception学习




--通过匿名块打印信息
declare
begin
dbms_output.put_line('this is mess');
end;


--查询emp表的信息
select * from emp;




--查询ename如果查出不到数据抛出数据找不到异常
declare
v_name  emp.ename%type;


begin
select ename into v_name from emp where empno = &v_empno;
dbms_output.put_line('v_name = ' || v_name);
exception 
  when no_data_found then
    dbms_output.put_line('empno is error');
  
end;
--查询ename,如果没有查询到数据,插入该数据。
declare
v_no number :=&no;
v_name emp.ename%type;
begin
  select ename into v_name from emp where empno = v_no;
  dbms_output.put_line('v_name=' || v_name);
exception
  when no_data_found then
    dbms_output.put_line('no data found');
    insert into emp(empno,ename) values (v_no,'jake');
end;






--自定义异常
declare
numException exception;
v_num number := &v_no;
begin
  if v_num > 10 then
    raise numException ;
    end if;
    dbms_output.put_line('v_number=' || v_num  );
exception
  when numException then
    dbms_output.put_line('number is small');
    raise_application_error(-20555,'num error');
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值