Oracle/ETC

PLSQL PLS-00103 오류

이거먹고밥먹자 2016. 11. 11. 20:45

CREATE PACKAGE LADDER_GAME IS
   PROCEDURE START_GAME(CNT_PEOPLE NUMBER);
END LADDER_GAME;
/

 

CREATE PACKAGE BODY LADDER_GAME IS
   PROCEDURE START_GAME(CNT_PEOPLE NUMBER) IS
   BEGIN
      SHOW_MESSAGE(RANDOM_VALUE(CNT_PEOPLE));
   END;
  
   FUNCTION  RANDOM_VALUE(SEED_VALUE NUMBER) RETURN NUMBER IS
   BEGIN
      DBMS_RANDOM.SEED(VAL => TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS');
      RETURN DBMS_RANDOM.VALUE (LOW => 1, HIGH => SEED_VALUE);
   END;
  
   PROCEDURE SHOW_MESSAGE(RESULT_NUMBER NUMBER)
   BEGIN
      DBMS_OUTPUT.PUT_LINE('PrizeWinner Number is '||TO_CHAR(RESULT_NUMBER)||' !!!');
   END;
END LADDER_GAME;
/

 

==========================================================

 

위 내용을 스크립트로 만들어서 오라클에서 실행을 했을때

 

ERROR가 발생해서

 

SQL> SHOW ERR

 

로 확인해보니

 

9 / 67   PLS-00103 에러가 발생하였다.

 

이게 구문에러인데 괄호나 기호가 잘못 들어갔을 경우 나온다.

 

문제는 67이라는 숫자인데 저게 9번째줄 67번째 자리에서 에러가 발생하였다는 출력물이다.

 

그러나 내 코드는 67번째 자리는 커녕 한 줄에 50자리도 안되는 코드로 작성하였다.

 

문제는 RANDOM_VALUE 펑션 부분인데 저 부분중에 반환값에 문법이 잘못되어 출력된건데 반환값까지 받아들여서 ERROR의 자리수를 출력한다.

 

혹시나 이와같은 ERROR 만났는데 컬럼의 위치가 쓸데없이 길 경우 반환값도 의심해 보도록 한다.