본문 바로가기
오라클 게시판/오라클 함수

[오라클 SQL 함수] TREAT 함수

by 기서무나구물 2021. 10. 23.

포스팅 목차

     

    TREAT

     


    문법

     

    treat::=

     


    목적 

    TREAT함수는 선언된 인수의 유형(Type)을 변경할 수 있다.

     

    이 함수를 이용하기 위하여 type에 대한 EXECUTE object권한이 필요하다.

    • type은 supertype 또는 expr의 선언형의 subtype일 필요가 있다. 만약 가장 많이 지정된 expr의 형태가 type(type의 subtype) 일 때, TREAT함수는 expr을 반환한다. 만약 가장 많이 지정된 expr의 type이 type(type의 subtype)이 아니라면, TREAT함수는 NULL을 반환한다.
    • 만약 expr의 선언형이 REF 타입이라면, REF를 지정할 수 있다.
    • 만약 expr의 선언형이 expr의 소스 타입이 REF라면, type은 subtype 또는 expr의 소스 타입의 supertype일 필요가 있다. 만약 가장 많이 지정된 DEREF(expr)의 형태가 type(type의 subtype)라면, TREAT함수는 expr을 반환한다. 만약 가장 많이 지정된 DEREF(expr)의 형태가 type(type의 subtype)이 아니라면, TREAT함수는 NULL을 반환한다.

    이 함수는 직접적으로 CLOB 데이터를 지원하지 않는다. 그러나 CLOB는 암묵적으로 데이터 변환을 통해서 인수로 전달될 수 있다.


    예제

    다음 예제는 "Substitutable Table and Column Examples" 에서 생성된 oe.persons 테이블을 이용한다. 이 테이블은  "Type Hierarchy Example"에서 생성된 person_type를 기본으로 한다. 이 예제는 persons 테이블에서 모든 사람의 급여 속성을 검색하여서, 종업원이 아닌 사람의 instances에 대한 값은 NULL이다.

    Oracle Program
    SELECT name, 
           TREAT(VALUE(p) AS employee_t).salary salary 
    FROM   persons p;

     

    Results
    NAME                          SALARY
    ------------------------- ----------
    Bob
    Joe                           100000
    Tim                             1000

    치환 가능한 열의 subtype 속성에 색인을 생성하기 위하여 TREATE함수를 사용할 수 있다.

     


      --------------------------------------------  

    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

     

    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE]
    SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크
    반응형

    댓글