안녕하세요 최근 이행 스크립트를 작성하는데 오너별, db link를 추가한 이행 스크립트 두가지를 모두 관리하게 되었습니다. 예를들어
SELECT * FROM ADM.MDC_ABS_INF;
SELECT * FROM ADM_11.MDC_ABS_INF@DBLINK_11;
이런식으로 두 가지패턴의 쿼리를 관리해야되는데 현재 이행스크립트도 많고, 프로그램을 개발해 돌리니까 쿼리 구조가 무너지는 문제가 발생해, SQL QUERY만으로 해결하는 방법이 필요합니다.
테이블명으로 컬럼을 하나 파서 REPLACE(SCRIPT, ADM_11. || TABLE_NAME, ADM. || TABLE_NAME || DBLINK_11 ) 이런식으로도 진행해봤지만 테이블 조인이 일어나는 경우도 많고 조인할 테이블 종류도 많아서 고민입니다.. 도와주시면 감사하겠습니다.
WITH t_script AS ( SELECT 'SELECT * FROM ADM.MDC_ABS_INF;' sql FROM dual UNION ALL SELECT 'SELECT * FROM adm.MDC_ABS_INF LEFT OUTER JOIN Adm.xxx ON 1=1;' FROM dual UNION ALL SELECT 'SELECT * FROM adm.MDC_ABS_INF , Adm.xxx WHERE 1=1;' FROM dual ) SELECT sql , REGEXP_REPLACE(sql, ' (ADM)(\.[^ ;,' ||CHR(13)||CHR(10)|| ']+)', ' \1_11\2@DBLINK_11', 1, 0, 'i') sql_2 FROM t_script ;