如何讓procedure儲存過程中的異常程式碼不中斷繼續執行
SQL> create or replace procedure proc_dep
2 authid current_user is
3 cursor cur_test is select object_name,object_type,owner from dba_objects where wner='SCOTT' and object_name in ('PROC_OY','PROC_NON') order by object_name desc;
4 v_object_type dba_objects.object_type%type;
5 v_object_name dba_objects.object_name%type;
6 v_owner dba_objects.object_name%type;
7 v_text clob;
8 begin
9 open cur_test;
10 loop
11 fetch cur_test into v_object_name,v_object_type,v_owner;
12 exit when cur_test%notfound;
13 dbms_metadata.set_transform_param( dbms_metadata.SESSION_TRANSFORM,'TABLESPACE',false);
14 select dbms_metadata.get_ddl(v_object_type,v_object_name,v_owner) into v_text from dual;
15 v_text:=replace(v_text,v_owner,'TBL_BCK');
16 /************異常模組化處理************/
17 begin
18 execute immediate v_text;
19 exception
20 when others then
21 continue;
22 end;
23 end loop;
24 close cur_test;
25 end;
26 /
Procedure created
SQL> select * from user_objects;
OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS TEMPORARY GENERATED SECONDARY NAMESPACE EDITION_NAME
-------------------------------------------------------------------------------- ------------------------------ ---------- -------------- ------------------- ----------- ------------- ------------------- ------- --------- --------- --------- ---------- ------------------------------
PROC_OY 68402 PROCEDURE 2013/2/28 2 2013/2/28 21: 2013-02-28:21:48:15 INVALID N N N 1
PROC_DEP 68400 PROCEDURE 2013/2/28 2 2013/2/28 22: 2013-02-28:22:06:49 VALID N N N 1
SQL> drop procedure proc_oy;
Procedure dropped
SQL> exec proc_dep;
PL/SQL procedure successfully completed
SQL> select * from user_objects
2 ;
OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS TEMPORARY GENERATED SECONDARY NAMESPACE EDITION_NAME
-------------------------------------------------------------------------------- ------------------------------ ---------- -------------- ------------------- ----------- ------------- ------------------- ------- --------- --------- --------- ---------- ------------------------------
PROC_DEP 68400 PROCEDURE 2013/2/28 2 2013/2/28 22: 2013-02-28:22:06:49 VALID N N N 1
PROC_NON 68401 PROCEDURE 2013/2/28 2 2013/2/28 22: 2013-02-28:22:07:24 VALID N N N 1
PROC_OY 68402 PROCEDURE 2013/2/28 2 2013/2/28 22: 2013-02-28:22:07:23 INVALID N N N 1
小結:
1,透過begin exception end模組化異常程式碼塊
2,異常程式碼中新增continue
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-754997/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle儲存過程(procedure)中執行動態SQL小記Oracle儲存過程SQL
- java中異常丟擲後程式碼還會繼續執行嗎Java
- 通過v$access檢視正在執行的儲存過程procedure儲存過程
- MySQL儲存過程中捕獲異常的方法MySql儲存過程
- 儲存過程中巢狀儲存過程的變數執行方式儲存過程巢狀變數
- SQL 建立儲存過程PROCEDURESQL儲存過程
- 儲存過程——異常捕獲&列印異常資訊儲存過程
- PL/SQL 05 儲存過程 procedureSQL儲存過程
- [Procedure]Oracle之分頁儲存過程Oracle儲存過程
- Oracle 基礎 ----procedure(儲存過程)Oracle儲存過程
- oracle 如何終止儲存過程的執行Oracle儲存過程
- MySQL儲存過程的異常處理方法MySql儲存過程
- mysql 儲存過程 procedure 批次建表MySql儲存過程
- 內層程式中發生異常後,不會繼續執行外層程式的語句
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- mysql儲存過程procedure、函式function的用法MySql儲存過程函式Function
- [MySQL光速入門]017 儲存過程中的"異常處理"MySql儲存過程
- mysql檢視儲存過程show procedure status;MySql儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- oracle 儲存過程遊標中處理並記錄異常Oracle儲存過程
- 在 Python 除錯過程中設定不中斷的斷點Python除錯斷點
- 檢視正在執行的儲存過程儲存過程
- php返回資料後如何讓程式繼續執行其它操作PHP
- /*動態執行儲存過程DEMO*/儲存過程
- 如何在pl/sql developer 7執行到oracle儲存過程設定斷點的地方SQLDeveloperOracle儲存過程斷點
- 如何查詢一個儲存過程是否在執行儲存過程
- Oracle中執行儲存過程call和exec區別Oracle儲存過程
- 服務端執行部署好的CLR儲存過程時出現如下異常服務端儲存過程
- procedure儲存過程呼叫dba字首的字典dba_objects儲存過程Object
- 執行Sybase儲存過程並返回ResultSet儲存過程
- 使用ADO執行儲存過程 (轉)儲存過程
- 使用Command執行儲存過程 (轉)儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- 我的測試儲存過程程式碼儲存過程
- 解決Java執行過程中拋簽名異常的問題Java
- MySQL儲存過程中如何使用ROLLBACKMySql儲存過程
- Sqlserver中的儲存過程SQLServer儲存過程
- MySQL 儲存過程定義條件和異常處理MySql儲存過程