ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PL/SQL SQLCODE, SQLERRM
    Database 2008. 9. 3. 13:47
    반응형
    WHEN OTHERS문으로 트랩(Trap)되는 오류들의 실제 오류 코드와 설명을 볼때 사용한다.
    - SQLCODE : 실행된 프로그램이 성공적으로 종료하였을때는 오류번호 0을 포함하며, 그렇지 못 할 경우에는 해당 오류코드 번호를 포함한다.
    - SQLERRM : SQLCODE에 포함된 오라클 오류 번호에 해당하는 메세지를 가진다.

    SQLCODE Value Description
    0      오류 없이 성공적으로 종료
    1      사용자 정의 예외 번호
    +100      NO_DATA_FOUND 예외 번호
    음수      위에 것을 제외한 오라클 서버 에러 번호

    SQLCODE, SQLERRM 예제 프로시저
    SQL> CREATE OR REPLACE PROCEDURE Errcode_Exception
            (v_deptno IN emp.deptno%type )

            IS
             v_emp   emp%ROWTYPE ;  

            BEGIN  

              DBMS_OUTPUT.ENABLE;

              -- ERROR발생 for문을 돌려야 됨
             SELECT *
             INTO v_emp
             FROM emp
             WHERE deptno = v_deptno;
         
            DBMS_OUTPUT.PUT_LINE('사번 : ' || v_emp.empno);    
            DBMS_OUTPUT.PUT_LINE('이름 : ' || v_emp.ename);    
             
         EXCEPTION
         
          WHEN OTHERS THEN

              DBMS_OUTPUT.PUT_LINE('ERR CODE : ' || TO_CHAR(SQLCODE));
              DBMS_OUTPUT.PUT_LINE('ERR MESSAGE : ' || SQLERRM);

      END;  
      /


    프로시져가 생성되었습니다.

    실행 결과
    SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용)

    SQL> EXECUTE Errcode_Exception(30);
    RR CODE : -1422
    ERR MESSAGE : ORA-01422: 실제 인출은 요구된 것보다 많은 수의 행을 추출합니다

    PL/SQL 처리가 정상적으로 완료되었습니다.

    위와 같이 SQLCODE, SQLERRM을 사용하면 에러 코드와 에러 메시지를 볼 수 있습니다.


    반응형
Designed by Tistory.