기술 정보
home
채널 소개
home

DBLINK 우회 방안 (and절 컬럼 다수사용)

문서 유형
기술 정보
분야
인터페이스/연동
키워드
dblink
and
1 more property

개요

Oracle에서 Tibero로의 DBLink에서 다수의 AND절 컬럼 사용 시 제약이 있을 경우 아래와 같은 우회 방안을 안내합니다.

방법

커서에 select 절 전체 결과를 포함해 그 결과를 이용하여 쿼리를 수행합니다.

테스트 테이블 생성

Tibero

CREATE TABLE T4_TIB (TEST_NO NUMBER, TEST_TEXT VARCHAR(20), UPD_CD VARCHAR(2)); INSERT INTO T4_TIB VALUES (1,’ORACLE’,’N’); INSERT INTO T4_TIB VALUES (2,’ORACLE’,’N’); INSERT INTO T4_TIB VALUES (3,’ORACLE’,’N’); INSERT INTO T4_TIB VALUES (4,’ORACLE’,’N’);
SQL
복사

Oracle

CREATE TABLE T4_ORA (CD CHAR, ORA_TEST_NO NUMBER, ORA_TEST_TEXT VARCHAR(20)); INSERT INTO T4_ORA VALUES (‘A’,1,’ORACLE’); INSERT INTO T4_ORA VALUES (‘A’,2,’ORACLE’); INSERT INTO T4_ORA VALUES (‘A’,3,’ORACLE’); INSERT INTO T4_ORA VALUES (‘A’,4,’ORACLE’); CREATE TABLE T4_ORA_2 (CD_2 CHAR, ORA_TEST_NO_2 NUMBER, ORA_TEST_TEXT_2 VARCHAR(20)); INSERT INTO T4_ORA_2 VALUES (‘A’,1,’ORACLE’); INSERT INTO T4_ORA_2 VALUES (‘A’,2,’ORACLE’); INSERT INTO T4_ORA_2 VALUES (‘B’,3,’ORACLE’); INSERT INTO T4_ORA_2 VALUES (‘B’,4,’ORACLE’);
SQL
복사

우회 전 쿼리

UPDATE T4_TIB@OT_0627 T SET UPD_CD = ‘Y’ WHERE 1=1 AND (T.TEST_NO, T.TEST_TEXT,T.UPD_CD) IN ( SELECT A.ORA_TEST_NO ,A.ORA_TEST_TEXT ,’N’ UPD_CD FROM T4_ORA A, T4_ORA_2 B WHERE A.CD = B.CD_2 )
SQL
복사

우회 후 쿼리

DECLARE CURSOR B_CUR IS ( SELECT distinct A.ORA_TEST_NO ,A.ORA_TEST_TEXT ,’N’ UPD_CD FROM T4_ORA A, T4_ORA_2 B WHERE A.CD=B.CD_2 ); BEGIN FOR C_CUR IN B_CUR LOOP UPDATE T4_TIB@OT_0627 T SET UPD_CD = ‘Y’ WHERE TEST_NO = C_CUR.ORA_TEST_NO AND TEST_TEXT = C_CUR.ORA_TEST_TEXT AND UPD_CD = C_CUR.UPD_CD; COMMIT; END LOOP; END; /
SQL
복사