2015-01-26 2 views
2

많은 삽입 작업이 있습니다. 제약 조건 위반이 발생하지만 어떤 삽입이 원인인지 알려주지 않습니다. 나는 아래 예외 잡기를 시도했다. 그러나 그것은 나에게 충분한 세부를주지 않고있다.PL SQL 상세 예외 캐치

EXCEPTION WHEN OTHERS THEN 
    ROLLBACK; 
    DBMS_OUTPUT.PUT_LINE('Procedure failed with: ' || SQLCODE || ' ' || SQLERRM); 
    DBMS_OUTPUT.put_line('Error in '|| $$plsql_unit || ' at ' || $$plsql_line); 
+0

어떤 종류의 삽입물입니까? 'FOR ALL ... SAVE EXCEPTIONS'은 어떨까요? – Sebas

+0

['dbms_utility'] (http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_util.htm#ARPLS73195)를 확인하십시오. 예 : http://stackoverflow.com/q/16183290/. 질문은 정확한 중복은 아니지만 대답은입니다. – user272735

답변

1

내가 항상 수행 한 방식은 시작 예외 블록에 각 삽입을 래핑하는 것입니다.

그래서 당신은 당신이 문제의 원인이되는 삽입 100 % 확신, 그래서 이것은 당신이 각 삽입에 사용자 정의 출력을 추가 할 수 있습니다

Begin 
    insert statement here 
exception when others then 
    dbms_output statements 
end; 

Begin 
    insert statement 
exception when others 
    dbms_output statements 
end. 

요법

로 끝날 것입니다. 추가 작업은 약간 걸리지 만 결국 디버깅에 많은 시간을 절약 할 수 있으므로 결국 가치가 있습니다.

희망이 있으면 도움이됩니다.

+0

당신은 잠재적으로 부차적 인 방식으로하고 있습니다 (YMMV 생각). 예 : http://stackoverflow.com/a/16187783/272735. 일반적으로보고에는 별도의 예외 블록이 필요하지 않지만 예외를 해결하기 위해 여러 작업이 필요할 때만 가능합니다. – user272735