本文共 1915 字,大约阅读时间需要 6 分钟。
oracle_存储过程exception异常处理大全跟实例经典最终
一个实例
Commit;
create or replace procedure PROC_SUNHONGBO_MONCHNL(tim varchar2) is
timest varchar(8);
timday varchar(33);
sqlsql varchar(6666);
no_result EXCEPTION;
begin
Commit;
select to_char(sysdate,'yyyymmddHH24miss') tima into timday from dual;
select to_char(add_months(sysdate,-1),'yyyymm') mon into timest from dual;
select tim mon into timest from dual;
execute immediate 'delete report.wo_sunhongbo_chnl where mon = '||tim;
Commit;
/*1、添加所需要的列 real_charge + time ,如果有就抛出异常后继续执行**********/
BEGIN
execute immediate 'alter table shiyw11.t_my add real_charge'||tim||' varchar2(66)';
EXCEPTION
WHEN no_result THEN
DBMS_OUTPUT.PUT_LINE('你的数据更新语句失败了!');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('你的数据更新语句!已经存在该列1:'||tim);
END;
execute immediate 'update shiyw11.t_my set real_charge'||tim||' = null';
Commit;
Commit;
dbms_output.put_line('timest:'||timest||';tim:'||tim||';timest:'||sqlsql);
Commit;
end PROC_SUNHONGBO_MONCHNL;
/
Commit;
主要内容如下:
1.1?异常处理概念
1.1.1?预定义的异常处理
1.1.2?非预定义的异常处理
1.1.3?用户自定义的异常处理
1.1.4??用户定义的异常处理
1.2?异常错误传播
1.2.1?在执行部分引发异常错误
1.2.2?在声明部分引发异常错误
1.3?异常错误处理编程
1.4??在?PL/SQL?中使用?SQLCODE,?SQLERRM异常处理函数
即使是写得最好的PL/SQL程序也会遇到错误或未预料到的事件。一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复。任何ORACLE错误(报告为ORA-xxxxx形式的Oracle错误号)、PL/SQL运行错误或用户定义条件(不一写是错误),都可以。当然了,PL/SQL编译错误不能通过PL/SQL异常处理来处理,因为这些错误发生在PL/SQL程序执行之前。
ORACLE?提供异常情况(EXCEPTION)和异常处理(EXCEPTION?HANDLER)来实现错误处理。
?
1.1?异常处理概念
异常情况处理(EXCEPTION)是用来处理正常执行过程中未预料的事件,程序块的异常处理预定义的错误和自定义错误,由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个程序运行.
?
有三种类型的异常错误:
??? 1.?预定义?(?Predefined?)错误
??ORACLE预定义的异常情况大约有24个。对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。
??? 2.?非预定义?(?Predefined?)错误
?? 即其他标准的ORACLE错误。对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发。
??? 3.?用户定义(User_define)?错误
?程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其引发。
?
异常处理部分一般放在?PL/SQL?程序体的后半部,结构为:
?
?
EXCEPTION???WHEN?first_exception?THEN?????WHEN?second_exception?THEN??
???WHEN?OTHERS?THEN??
转载地址:http://ojyzo.baihongyu.com/