base 테이블과 트레이스 파일은 데이터 타입이 코드로 표시되어 있다. 데이터 타입 코드 변환 함수를 작성해보자.
아래와 같이 함수를 작성하자. SYS.DBA_TAB_COLS_V$ 뷰 소스를 참조했다.
-- 1 CREATE OR REPLACE FUNCTION fnc_data_type (i_data_type_code IN NUMBER) RETURN VARCHAR2 DETERMINISTIC IS BEGIN RETURN CASE i_data_type_code WHEN 1 THEN 'VARCHAR2' -- NVARCHAR2 WHEN 2 THEN 'NUMBER' -- FLOAT WHEN 8 THEN 'LONG' WHEN 9 THEN 'VARCHAR' -- NVARCHAR WHEN 12 THEN 'DATE' WHEN 23 THEN 'RAW' WHEN 24 THEN 'LONG RAW' WHEN 58 THEN 'USER_TYPE' WHEN 69 THEN 'ROWID' WHEN 96 THEN 'CHAR' -- NCHAR WHEN 100 THEN 'BINARY_FLOAT' WHEN 101 THEN 'BINARY_DOUBLE' WHEN 105 THEN 'MLSLABEL' WHEN 106 THEN 'MLSLABEL' WHEN 111 THEN 'REF' WHEN 112 THEN 'CLOB' -- NCLOB WHEN 113 THEN 'BLOB' WHEN 114 THEN 'BFILE' WHEN 115 THEN 'CFILE' WHEN 121 THEN 'USER_TYPE' WHEN 122 THEN 'USER_TYPE' WHEN 123 THEN 'USER_TYPE' WHEN 178 THEN 'TIME' WHEN 179 THEN 'TIME WITH TIME ZONE' WHEN 180 THEN 'TIMESTAMP' WHEN 181 THEN 'TIMESTAMP WITH TIME ZONE' WHEN 182 THEN 'INTERVAL YEAR TO MONTH' WHEN 183 THEN 'INTERVAL DAY TO SECOND' WHEN 208 THEN 'UROWID' WHEN 231 THEN 'TIMESTAMP WITH LOCAL TIME ZONE' ELSE 'UNDEFINED' END; END fnc_data_type; /
아래와 같이 사용할 수 있다.
-- 2 SELECT b.name, fnc_data_type (b.type#) AS data_type FROM dba_objects a, sys.col$ b WHERE a.owner = 'SCOTT' AND a.object_name = 'EMP' AND b.obj# = a.object_id; NAME DATA_TYPE -------- --------- EMPNO NUMBER ENAME VARCHAR2 JOB VARCHAR2 MGR NUMBER HIREDATE DATE SAL NUMBER COMM NUMBER DEPTNO NUMBER 8 행이 선택되었습니다.
'Oracle > PL/SQL' 카테고리의 다른 글
런타임 실행 계획 조회 함수 (0) | 2018.12.12 |
---|---|
RAW 변환 함수 (0) | 2018.11.13 |
가변 IN 조건 값 처리 #2 - 임시 테이블 (0) | 2018.11.03 |
가변 IN 조건 값 처리 #1 - PIPELINED 함수 (0) | 2018.11.03 |
중복 할인 함수 (0) | 2018.03.04 |