상세 컨텐츠

본문 제목

ORA-01009:필수 매개변수가 없습니다.

Programming/Database

by otamot 2010. 10. 11. 15:18

본문

  회사 업무처리중에 오라클 오류메시지를 만났습니다. ‘ORA-01009’! 필수 매개변수가 없다고 하는데 쿼리에는 특별히 문제가 없었습니다. 구글신에게 물어봤습니다. 구글신은 쿼리에 주석을 달때 이 런문제가 생긴수 있다는 말이 있었습니다. 주석 중에 /* */ 사이에 주석 내용을 입력할 때 한칸씩 떼어야 한다던가 -- 문제 다음에 한칸을 반드시 떼어야 한다는 내용이었습니다. 다음과 같이 말이죠.
/* 주석내용 */
-- 주석 내용
그래서 살펴봤더니 주석이 존재하고 있었습니다. 그런데 -- 다음에 한칸이 떨어진 정상적인 상태였습니다. 그래서 아주 주석을 삭제하고 처리해 봤지만 마찬가지로 오류가 발생했습니다. 구글신은 그 다음의 TIP을 주지 못했습니다. 무려 5시간 끝에 해결했습니다.

쿼리는 다음과 같은 형태였습니다.

WITH AAA AS (
   SELECT AAA FROM TABLE000
)
SELECT ... FROM AAA, BBB
WHERE ...

이렇게 된 쿼리를 JAVA에서 StringBuffer로 append 처리해서 쿼리 스트링을 구성하고 있었습니다. 해결은 다음과 같습니다.

SELECT * FROM (

   WITH AAA AS (
       SELECT AAA FROM TABLE000
   )
   SELECT ... FROM AAA, BBB
   WHERE ...

)

이렇게 WITH절이 가장 밖에 노출 되었던 형태를 한번 더 감싸서 SELECT 문을 단순 변경 했습니다. 그러고 나니 정상적으로 수행되었습니다.
참고로 Local에서 테스트 할 때는 문제 없었던 내용이었으나 Real 서버에 deploy한 뒤 발생한 문제였습니다. Local 환경과 Real 서버 환경은 다음과 같습니다.

Local :  Windows7, jdk 1.4.2 16, Tomcat 5.0
Real :  SonOs 5.9, jdk 1.4.2 16, Jeus 42

정말 이럴 때는 어떻게 처리해야 할 지... 이글 참고하시어 만일 이런일 이 생기셨을 때 저처럼 5시간 넘게 시달리지 마시길 빕니다.

관련글 더보기