2011-11-21 未捕获异常
http://www.itpub.net/thread-1499223-17-1.html
167楼
下列哪些选项在执行之后会导致未捕获的异常:
ORA-06502:PL/SQL:numericorvalueerror:numberprecisiontoolarge
(A)
DECLAREl_numberNUMBER(2):=100;BEGINDBMS_OUTPUT.put_line(l_number);END;/
SQL>DECLARE2l_numberNUMBER(2):=100;3BEGIN4DBMS_OUTPUT.put_line(l_number);5END;6/DECLAREl_numberNUMBER(2):=100;BEGINDBMS_OUTPUT.put_line(l_number);END;ORA-06502:PL/SQL:数字或值错误:数值精度太高ORA-06512:在line2SQL>
(B)
DECLAREl_numberNUMBER(2):=100;BEGINDBMS_OUTPUT.put_line(l_number);EXCEPTIONWHENOTHERSTHENDBMS_OUTPUT.put_line('ERROR');END;/
SQL>DECLARE2l_numberNUMBER(2):=100;3BEGIN4DBMS_OUTPUT.put_line(l_number);5EXCEPTION6WHENOTHERS7THEN8DBMS_OUTPUT.put_line('ERROR');9END;10/DECLAREl_numberNUMBER(2):=100;BEGINDBMS_OUTPUT.put_line(l_number);EXCEPTIONWHENOTHERSTHENDBMS_OUTPUT.put_line('ERROR');END;ORA-06502:PL/SQL:数字或值错误:数值精度太高ORA-06512:在line2SQL>
(C)
CREATEORREPLACEPACKAGEplch_pkgISFUNCTIONget_numberRETURNNUMBER;END;/CREATEORREPLACEPACKAGEBODYplch_pkgISg_dateDATE;g_numberNUMBER(2):=100;FUNCTIONget_numberRETURNNUMBERISBEGINRETURNg_number;END;BEGINg_date:=SYSDATE;EXCEPTIONWHENOTHERSTHENDBMS_OUTPUT.put_line('ERROR');END;/DECLAREl_numberNUMBER(2):=plch_pkg.get_number;BEGINDBMS_OUTPUT.put_line(l_number);END;/
SQL>CREATEORREPLACEPACKAGEplch_pkg2IS3FUNCTIONget_number4RETURNNUMBER;5END;6/PackagecreatedSQL>CREATEORREPLACEPACKAGEBODYplch_pkg2IS3g_dateDATE;4g_numberNUMBER(2):=100;56FUNCTIONget_number7RETURNNUMBER8IS9BEGIN10RETURNg_number;11END;12BEGIN13g_date:=SYSDATE;14EXCEPTION15WHENOTHERS16THEN17DBMS_OUTPUT.put_line('ERROR');18END;19/PackagebodycreatedSQL>DECLARE2l_numberNUMBER(2):=plch_pkg.get_number;3BEGIN4DBMS_OUTPUT.put_line(l_number);5END;6/DECLAREl_numberNUMBER(2):=plch_pkg.get_number;BEGINDBMS_OUTPUT.put_line(l_number);END;ORA-06502:PL/SQL:数字或值错误:数值精度太高ORA-06512:在"YOGA.PLCH_PKG",line4ORA-06512:在line2SQL>
(D)
CREATEORREPLACEPACKAGEplch_pkgISg_numberNUMBER(2):=100;END;/DECLAREl_numberNUMBER(2):=plch_pkg.g_number;BEGINDBMS_OUTPUT.put_line(l_number);END;/
SQL>CREATEORREPLACEPACKAGEplch_pkg2IS3g_numberNUMBER(2):=100;4END;5/PackagecreatedSQL>DECLARE2l_numberNUMBER(2):=plch_pkg.g_number;3BEGIN4DBMS_OUTPUT.put_line(l_number);5END;6/DECLAREl_numberNUMBER(2):=plch_pkg.g_number;BEGINDBMS_OUTPUT.put_line(l_number);END;ORA-06502:PL/SQL:数字或值错误:数值精度太高ORA-06512:在"YOGA.PLCH_PKG",line3ORA-06512:在line4SQL>
答案在172楼
2011-11-21 答案:ABCD
如果异常发生在BEGIN之前,比如DECLARE部分或PACKAGE的变量初始化部分,那么这个异常就不会被当前块的EXCEPTION捕获,而是继续向外传播。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。