Oracle/PL/SQL2018. 11. 12. 12:08

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
Posted by 정희락_