by Num [SQL Developer] PL/SQL 변수 [2023.05.03 16:05:35]
테이블을 조회할때 헤더에 오는 값을 코멘트값으로 만들고 싶습니다.
생각해본 방법으로는
DBA_COL_COMMENTS 테이블에서 코멘트값을 가지고 LISTAGG 하여 한줄로 나열한 것을 변수에 저장한 뒤
해당 변수를 가지고 피봇테이블을 구성할 생각입니다.
문제는
변수에 SELECT 문의 결과값을 넣으려면 DECLARE 를 써야하는데 DECLARE에서는 조회문의 결과를 보여줄 수 없습니다.
하여 함수나 프로시저로 만들거나 해서 결과값을 가지고 나온뒤 DEFINE 해서 써야할 것 같은데...
함수나 프로시저로 만들지 않고 구성하려면 방법이 없을까요?
SELECT * FROM (SELECT a.owner , a.table_name , a.column_id , a.column_name col_name , b.comments col_cmnt FROM dba_tab_columns a , dba_col_comments b WHERE a.owner = b.owner AND a.table_name = b.table_name AND a.column_name = b.column_name AND a.owner = 'SCOTT' AND a.table_name = 'EMP' ) UNPIVOT INCLUDE NULLS (v FOR gb IN (col_name, col_cmnt)) PIVOT (MIN(v) FOR column_id IN ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 -- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 -- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 -- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 -- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 )) ORDER BY owner, table_name, gb DESC ;