Notice
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- annotation
- junit
- ERD
- TDD
- 우분투
- 오류
- 안드로이드
- 메모
- java se
- 초대장
- 실수
- 오라클
- eclipse
- action
- Modeling
- 초대장 배포
- 디자인 오류
- Log4j
- struts2
- TAG 오류
- Android
- DATABASE
- eclipse plugin
- java
- iBATIS
- Spring Framework
- 관심책
- derby
- Oracle
- Spring
- Today
- 0
- Total
- 579,107
거꾸로 토마토
ORA-01009:필수 매개변수가 없습니다. 본문
회사 업무처리중에 오라클 오류메시지를 만났습니다. ‘ORA-01009’! 필수 매개변수가 없다고 하는데 쿼리에는 특별히 문제가 없었습니다. 구글신에게 물어봤습니다. 구글신은 쿼리에 주석을 달때 이 런문제가 생긴수 있다는 말이 있었습니다. 주석 중에 /* */ 사이에 주석 내용을 입력할 때 한칸씩 떼어야 한다던가 -- 문제 다음에 한칸을 반드시 떼어야 한다는 내용이었습니다. 다음과 같이 말이죠.
쿼리는 다음과 같은 형태였습니다.
/* 주석내용 */그래서 살펴봤더니 주석이 존재하고 있었습니다. 그런데 -- 다음에 한칸이 떨어진 정상적인 상태였습니다. 그래서 아주 주석을 삭제하고 처리해 봤지만 마찬가지로 오류가 발생했습니다. 구글신은 그 다음의 TIP을 주지 못했습니다. 무려 5시간 끝에 해결했습니다.
-- 주석 내용
쿼리는 다음과 같은 형태였습니다.
WITH AAA AS (
SELECT AAA FROM TABLE000
)
SELECT ... FROM AAA, BBB
WHERE ...
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시간 넘게 시달리지 마시길 빕니다.
'Programming > Database' 카테고리의 다른 글
오라클 문자컬럼에서 숫자타입이 아닌 문자가 존재하는 컬럼 구하기 (0) | 2010.10.14 |
---|---|
ORA-01009:필수 매개변수가 없습니다. (2) | 2010.10.11 |
오라클 사용자 예외처리 사용 방법 (0) | 2010.08.23 |
Oracle 유용 구분 정리 해석내용 - PARTITION BY, START WITH...CONNECT BY PRIOR (1) | 2010.05.28 |
2 Comments