반응형
- ORA-12704 의 발생원인
- ORA-12704 : 집합 연산의 대상이 되는 데이터 타입이 상이한 경우 ORA-12704 에러가 발생합니다.
- NVARCHAR2와 VARCHAR2를 집합연산 하는 경우 이 에러를 마주하게 됩니다.
- VARCHAR2와 NVARCHAR2의 차이
- VARCHAR2는 데이터를 ASCII 코드 형태로 저장하고 NVARCHAR2는 UNICODE 형태로 저장합니다.
- 따라서 NVARCHAR2는 기본적으로 CHAR 단위로 할당되고 VARCHAR2는 CHAR로 할당이 가능하나 일반적으로 BYTE 단위로 할당하게 됩니다.
- NVARCHAR2는 UNICODE 문자 체계에 대응하기 위한 데이터타입으로 오라클 구버전에서 사용이 불가능합니다.
- ORA-01790와의 차이
- 비슷한 Oracle 에러로 "ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다" 에러가 있습니다.
- 이 에러는 ORA-12704와 마찬가지로 Oracle 집합연산시 데이터 타입이 다른 경우 발생합니다.
- 단, 차이점은 ORA-12704 에러는 NVARCHAR2와 VARCHAR2를 비교하는 경우에 발생하고 ORA-01790 에러는 Number와 Varchar2 필드를 묶으려고 하는 경우 발생합니다.
- 해결방법
- 가장 간단한 해결 방법으로 VARCHAR2 데이터타입의 필드에 UNISTR이라는 함수로 필드를 감싸줍니다
- SELECT UNISTR(VARCHAR2_FIELD) AS FNAME FROM TAB1 UNION SELECT NVARCHAR2_FIELD AS FNAME FROM TAB2
- 자주 비교되는 테이블이라면 테이블 구조를 맞춰줍니다. 여기서 영문과 숫자만 있는 필드라면 VARCHAR2로 맞추는걸 권장합니다.
반응형
'개발자정보' 카테고리의 다른 글
Oracle TABLESPACE 생성 및 사용자 할당(매핑) (0) | 2022.07.28 |
---|---|
Oracle > MySQL 변경 시 주의사항 (0) | 2022.07.15 |
SW사업 대가산정 가이드 개정 내용(2022 개정) (0) | 2022.07.09 |
Salesforce Topic & TopicAssignment (0) | 2022.07.05 |
DB 무료 관리툴 - dbeaver 설치 및 간단 사용기(윈도우) (0) | 2022.07.04 |