INSERT INTO TB_NB_NL_HH_VIP ( NSGRN_LMT_AM )
SELECT (CASE WHEN :chk_yn = '0' THEN NSGRN_LMT_AM ELSE :nsgrn_lmt_am END)
FROM TB_NB_NL_HH_VIP
위와 같은 경우 컴파일을 정상적으로 수행되나 실행할 때 다음과 같은 오류가 발생합니다.
ORA-00932: 일관성 없는 데이터 유형
이것은 프로프레임 내부적으로 PfmNumber 타입의 변수를 SQL 속에 대입할 때 char 문자열로 값을 전달하기 때문에 발생되는 문제 입니다. 따라서 위와 같은 execSQL 속의 입력변수의 타입을 맞추기 위하여 다음과 같이 고쳐서 사용해야 합니다.
INSERT INTO TB_NB_NL_HH_VIP ( NSGRN_LMT_AM )
SELECT (CASE WHEN :chk_yn = '0' THEN NSGRN_LMT_AM ELSE TO_NUMBER(:nsgrn_lmt_am) END)
FROM TB_NB_NL_HH_VIP
비슷한 케이스로서 union을 사용할 때도 오류가 발생되는데 원인은 동일한 데서 기인된다.
union 문에서 테이블 변수와 입력변수를 동시에 사용하는 경우
실제사례2) SELECT NSGRN_LMT_AM FROM TB_NB_...
UNION ALL
SELECT :nsgrn_lmt_am FROM TB_NB_...
에러내용 => ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다
위 두가지 상황과는 별개로 decode 조건문에서 테이블변수를 먼저 사용하고, 뒤이어 입력변수를 사용하는 경우 오라클이 to_number 또는 to_char 알아서 하기 때문에 오류는 나지 않는다.
실제사례3) SELECT decode(:chk_yn, 0, NSGRN_LMT_AM, :nsgrn_lmt_am) FROM TB_NB_...
지무길 책임이 소스를 제공했습니다.
'컴퓨터활용 > 티맥스' 카테고리의 다른 글
"[DBIO] 조건에 맞는 함수를 호출할 수 없습니다" 오류시 (0) | 2008.05.19 |
---|---|
Full GC 발생시 아래사항을 숙지하여 Heap dump를 떠야할 (0) | 2008.05.19 |
error #2029: expected an expression (0) | 2008.05.19 |
dlcall 오류 날 때 (0) | 2008.05.19 |
[디지털데일리] 코어뱅킹 솔루션 시장, 4사 경쟁구도 치열 (0) | 2008.05.12 |