2012-07-23 65 views
1

以下SQL * Plus腳本報告故障

WHENEVER OSERROR EXIT FAILURE 
WHENEVER SQLERROR EXIT FAILURE 

DECLARE 
    EXIST_INDEXES BOOLEAN := FALSE; 
BEGIN 
    FOR INDEX IN (SELECT * FROM INDEXES) 
    LOOP 
     EXIST_INDEXES := TRUE; 
     DBMS_OUTPUT.PUT_LINE(INDEX.SCHEMA || '.' || INDEX.NAME); 
    END LOOP; 

    IF EXIST_INDEXES THEN 
     RAISE_APPLICATION_ERROR(-20000,'Before proceeding, it is recommended to drop the indexes listed above'); 
    END IF; 
END; 

-- Here go SQL statements that should be executed if no indexes were found 

當在表/視圖索引中的條目生成以下輸出:

SCHEMA_1.INDEX_1 
DECLARE 
* 
ERROR at line 1: 
ORA-20000: Before proceeding, it is recommended to drop the indexes listed above 
ORA-06512: at line 13 

當有中的條目表/視圖索引,如何:

  • 抑制出現在S的DECLARE*線壓縮輸出;
  • 在PL/SQL塊之後跳過執行SQL語句;
  • 有腳本返回一個非零的代碼?

回答

0

我不確定您可以自定義SQL * Plus的錯誤輸出。然而,DECLARE將是標準的,你可以用腳本過濾。

關於您的其他問題,如果發生錯誤,SQL * Plus的行爲受WHENEVER SQLERROR命令的管轄。在你的情況下,如果你想在錯誤的情況下退出並顯示錯誤代碼,你可以在腳本的開頭輸入以下命令:

WHENEVER SQLERROR EXIT FAILURE ROLLBACK