SELECT절에 컬럼명을 나열해야할 때 특정 테이블의 컬럼명을 가져오고 별칭(Alias)을 붙일 수 있는 함수
CREATE OR REPLACE FUNCTION get_column_names
(
p_table_name USER_TAB_COLUMNS.TABLE_NAME%TYPE, -- 테이블명
p_column_alias USER_TAB_COLUMNS.TABLE_NAME%TYPE -- 컬럼 앞에 붙을 별칭, ''으로 입력하면 생략 가능
)
RETURN VARCHAR2
IS
v_column_in_line VARCHAR2(4000);
BEGIN
SELECT CASE
WHEN p_column_alias IS NULL OR p_column_alias = '' THEN
LISTAGG(LOWER(column_name), ', ')
ELSE
LISTAGG(p_column_alias || '.' || LOWER(column_name), ', ')
END AS column_names
INTO v_column_in_line
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = p_table_name;
IF v_column_in_line IS NULL OR v_column_in_line = '' THEN
return '결과 없음';
ELSE
return v_column_in_line;
END IF;
END;
실행 예시
별칭 사용
SELECT get_column_names('EMPLOYEES', 'e')
FROM DUAL;

별칭 미사용
SELECT get_column_names('EMPLOYEES', '')
FROM DUAL;

'데이터베이스 > Oracle' 카테고리의 다른 글
| [OracleDB] 두 개의 테이블에서 조인 조건으로 사용할 수 있는 컬럼을 가져오는 함수 (0) | 2023.06.15 |
|---|---|
| [OracleDB] Snake Case를 Camel Case로 변환하는 함수 (0) | 2023.06.15 |
| [OracleDB] 실행계획 (Execution Plan) (0) | 2023.06.15 |
| [OracleDB] Group By (0) | 2023.06.14 |
| [OracleDB] 계층형 쿼리 (0) | 2023.06.14 |