Oracle에서 Tibero로의 DBLink 사용 시 제약이 있을 수 있는 사항들에 대해 우회하여 처리할 수 있는 방안을 안내합니다.
Oracle에서 Tibero sequence 값 호출
Oracle to Tibero Link 를 사용한 sequence 호출 시 제약이 있을 경우 아래와 같은 우회 방안을 안내합니다.
1. Tibero 에 sequence 에 대한 function을 생성합니다.
2. 해당 function 을 view 로 생성합니다.
3. Oracle to Tibero Link 시 sequence가 아닌 view 를 호출하여 사용하는 형태로 변형합니다.
— 테스트 시퀀스 생성
CREATE SEQUENCE SEQ_TEST_0627 –시퀀스이름 EX_SEQ
INCREMENT BY 1 –증감숫자 1
START WITH 1 –시작숫자 1
MINVALUE 1 –최소값 1
MAXVALUE 1000 –최대값 1000
NOCYCLE –순한하지않음
noCACHE;
— 테스트 테이블 생성
CREATE TABLE T2_TIB (SEQ NUMBER, TEXT VARCHAR(20));
INSERT INTO T2_TIB VALUES (SEQ_TEST_0627.NEXTVAL,’테스트’);
–우회 전 쿼리
SELECT SEQ.NEXTVAL@OT_0627 AS SEQ_TIB,
‘TEXT’ AS TEXT_TIB
FROM DUAL;
–우회 후 쿼리
— 시퀀스 호출 함수 생성
CREATE OR REPLACE FUNCTION SEQ_TEST_0627_FUNC RETURN NUMBER
IS V_NEXTVAL NUMBER;
BEGIN
SELECT SEQ_TEST_0627.NEXTVAL INTO V_NEXTVAL FROM DUAL;
RETURN V_NEXTVAL;
END SEQ_TEST_0627_FUNC;
— 함수 호출 VIEW를 생성
CREATE OR REPLACE VIEW SEQ_TEST_0627_VIEW AS
SELECT SEQ_TEST_0627_FUNC AS NEXTVAL FROM DUAL;
SELECT
(SELECT NEXTVAL FROM SEQ_TEST_0627_VIEW@OT_0627) AS SEQ_TIB,
‘TEXT’ AS TEXT_TIB
FROM DUAL;
Oracle에서 Tibero update 시 형 변환
Oracle to Tibero Link 를 사용해 Tibero에 형 변환 후 update 시 제약이 있을 경우 아래와 같은 우회 방안을 안내합니다.
Note!
본 문서에서는 PL/SQL 형태로 바꾸어 변형된 값을 인자로 받아 수행했습니다.
— 테스트 테이블 생성
CREATE TABLE T3_TIB (DT_CD VARCHAR(20), DT_STAMP VARCHAR(20) ,DT DATE);
INSERT INTO T3_TIB VALUES (‘1′,’20201300’, SYSDATE);
INSERT INTO T3_TIB VALUES (‘1′,’20201400’, SYSDATE);
INSERT INTO T3_TIB VALUES (‘0′,’20201500’, SYSDATE);
INSERT INTO T3_TIB VALUES (‘1′,’20201600’, SYSDATE);
–우회 전 쿼리
UPDATE T3_TIB@OT_0627
SET DT_STAMP = TO_CHAR(SYSDATE,’YYYYMMDD’)
,DT = SYSDATE
WHERE DT_CD=’1′;
–우회 후 쿼리
DECLARE
D1 CHAR(8);
D2 DATE;
BEGIN
SELECT TO_CHAR(SYSDATE,’YYYYMMDD’) INTO D1 FROM DUAL;
SELECT SYSDATE INTO D2 FROM DUAL;
UPDATE T3_TIB@OT_0627
SET DT_STAMP = D1
,DT = D2
WHERE DT_CD=’1′;
COMMIT;
END;
/
☞ “[Tibero] DBLINK 우회방안_Oracle to Tibero (2)”에서 계속됩니다.