안녕하세요.
DBA_TAB_COLUMNS 등을 통해 아래와 같은 테이블을 만들었습니다.
owner | table_name | pk_cnt | pk_col_nm1 | pk_col_nm2 | pk_col_nm3 | pk_col_nm4 | pk_col_nm5 |
hong | emp | 3 | apa | apb | apc | ||
john | dept | 4 | bpa | bpb | bpc | bpd | |
kim | ks_code | 2 | cpa | cpb |
목적은 해당 테이블을 통해서 일괄적인 SQL문장을 생성 하고자 하는것인데
다음과 같은 형태입니다.
SELECT apa^apb^apc from hong.emp;
SELECT bpa^bpb^bpc^bpd from john.dept;
SELECT cpa^cpb from kim.ks_code;
어려운 점은 pk_cnt 의 숫자 만큰 뒤에 컬럼을 '^' 구분자로 이어 주는것입니다.
고수분들의 조언 부탁 드립니다.
감사합니다.
WITH t(owner, table_name, pk_cnt, pk_col_nm1, pk_col_nm2, pk_col_nm3, pk_col_nm4, pk_col_nm5) AS ( SELECT 'hong', 'emp' , 3, 'apa', 'apb', 'apc', '' , '' FROM dual UNION ALL SELECT 'john', 'dept' , 4, 'bpa', 'bpb', 'bpc', 'bpd', '' FROM dual UNION ALL SELECT 'kim' , 'ks_code', 2, 'cpa', 'cpb', '' , '' , '' FROM dual ) SELECT owner, table_name, pk_cnt , 'SELECT ' || RTRIM( pk_col_nm1||'^'||pk_col_nm2||'^'||pk_col_nm3||'^'||pk_col_nm4||'^'||pk_col_nm5 , '^') || ' FROM ' || owner ||'.'|| table_name || ';' AS v_sql FROM t ;