您的位置:首页 > 数据库 > Oracle

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

2017-01-18 20:51 351 查看
-异常:自定义异常和预定义异常

--异常:程序运行过程中出现的错误

--预定义异常: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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle