2013-06-28 6 views
0

오류가 발생하면 사용자 정의 메시지를 인쇄하여 SQLPlus에서 오류를 처리하는 방법은 무엇입니까? 나는 아래에 나의 코드를 넣었다.Bash 스크립트에서 Oracle 오류 처리

내 코드

#!/bin/bash 

    echo "My Scripts run below" 
    sqlplus -S UID1/[email protected]<< EOF 
    whenever sqlerror exit sql.sqlcode; 
    @/path/Script1 
    @/path/Script2 
    exit; 
    EOF 
    echo "My Scripts have run" 

출력

My Scripts run below 
SP2-0310: unable to open file "/path/Script1.sql" 
SP2-0310: unable to open file "/path/Script2.sql" 
My Scripts have run 

필수 출력 실제로

My Scripts run below 
**Below error in Script1** 
SP2-0310: unable to open file "/path/Script1.sql" 
**Below error in Script2** 
SP2-0310: unable to open file "/path/Script2.sql" 
My Scripts have run 

답변

1

는 SQLPLUS 리턴 코드는 항상 0 FR 톰 내 경험, 그래서 조언 너 할꺼야. 이전 프로젝트에서해야 할 일 : 스크립트 출력을 파일로 리디렉션 한 다음 구문 분석하여 오류를 나타내는 SPx-xxxx 또는 ORA-xxxx 식을 찾습니다.

1

WHENEVER SQLERROR은 SQL 명령 또는 PL/SQL 블록에서 오류를 감지합니다. 대신 운영 체제 오류를 감지하려면 WHENEVER OSERROR을 사용해야합니다.

WHENEVER OSERROR EXIT FAILURE 

의심되는 오류 코드가 반환되는 경우, 다수의 하드 코딩에 대해 생각할 수 :

WHENEVER OSERROR EXIT 1 

명확하게하기 위해, 내가 변경하려는 마지막 EXIT

EXIT SUCCESS 

에 당신 script1과 script2에 대한 오류를 모두 포착 할 수 없습니다. 첫 번째 오류가 발생하면 SQL * Plus 스크립트가 종료되고 제어권을 bash로 반환합니다.

bash에서 종료 코드를 사용하여 수행 할 작업에 대해서는 Error handling in Bash

을 참조하십시오.
관련 문제