기술 정보
home
채널 소개
home

UTL_RAW.CONVERT 기능 사용 시 TBR-15146 오류 발생

문서 유형
장애 해결
분야
App개발
키워드
PSM
적용 제품 버전
6FS07
오류 코드
15046
15146

현상

UTL_RAW.CONVERT 기능 사용 시 아래 예시코드와 같이 TBR-15146 오류 발생하였습니다.
DECLARE rawvar RAW(100); to_charset VARCHAR(100); from_charset VARCHAR2(100); literal VARCHAR2(100); BEGIN literal := 'A'; to_charset := 'US7ASCII'; from_charset := 'UTF8'; rawvar := utl_raw.convert(UTL_RAW.CAST_TO_RAW(literal), to_charset, from_charset); dbms_output.put_line(rawvar); END; / TBR-15146: PSM compilation error. TBR-15046: Identifier is out of scope. at line 10, column 11 of null: rawvar := utl_raw.convert(UTL_RAW.CAST_TO_RAW(literal), to_charset, from_charset
SQL
복사

원인

UTL_RAW.CONVERT 기능이 구현된 패치가 존재하지 않아 TBR-15146 오류가 발생하였습니다.

해결

UTL_RAW.CONVERT 함수 사용 쿼리 수행 불가할 시, 232649 패치 포함 바이너리인지 확인이 필요합니다.
확인 후, FS07_CS_232649a 패치를 적용해 해결합니다.
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.
참고
utl_raw.convert 함수는 raw타입 데이터를 다른 charset의 raw타입 데이터로 변경하므로, 아래 순서를 적용하여 우회 가능합니다.
1. 변환하려는 raw 타입 데이터를 utl_raw.cast_to_varchar2 를 이용해 varchar타입으로 변경합니다.
2. 변환된 varchar타입 데이터를 CONVERT 함수의 인자로 하여 다른 charset으로 변경합니다.
3. 변환된 varchar타입 데이터를 utl_raw.cast_to_raw 함수를 통해 raw타입으로 변경합니다.
declare str_utf varchar2(100); str_euc varchar2(100); r_utf raw(100); r_euc raw(100); begin str_utf := convert ('테스트str', 'UTF8', 'EUCKR'); r_utf := utl_raw.cast_to_raw(str_utf); -- r_utf은 UTF8 charset의 raw데이터 str_utf := utl_raw.cast_to_varchar2(r_utf); str_euc := convert(str_utf, 'EUCKR', 'UTF8'); dbms_output.put_line(str_euc); -- 정상 출력 r_euc := utl_raw.cast_to_raw(str_euc); -- r_euc는 EUCKR chatset의 raw데이터 end; /
SQL
복사