2012-07-23 4 views
1

테이블/뷰 인덱스에 항목이있는 경우보고 실패

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 

이 출력을 생성의 SQL * Plus를 스크립트 다음에 오는 : 항목에 있습니다

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 

가 테이블/뷰 인덱스 방법 :

  • 이의에 나타나지 DECLARE* 라인을 억제 스크립트 출력;
  • PL/SQL 블록 다음에 SQL 문을 실행하지 마십시오.
  • 스크립트가 0이 아닌 코드를 반환합니까?

답변

0

SQL * Plus의 오류 출력을 사용자 정의 할 수 있는지 확신하지 못합니다. 그러나 DECLARE 표준이되며 나중에 스크립트로이를 필터링 할 수 있습니다.

다른 질문에 대해서는 오류 발생시 SQL * Plus의 동작이 WHENEVER SQLERROR 명령의 적용을받습니다. 오류의 경우 오류 코드를 사용하여 종료하려면 스크립트 시작 부분에 다음 명령을 입력하십시오.

WHENEVER SQLERROR EXIT FAILURE ROLLBACK