문법 |
목적 |
TREAT함수는 인수의 선언형을 변경한다.
이 함수를 이용하기 위하여 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이다.
SELECT name, TREAT(VALUE(p) AS employee_t).salary salary FROM persons p; NAME SALARY ------------------------- ---------- Bob Joe 100000 Tim 1000
치환가능한 열의 subtype 속성에 색인을 생성하기 위하여 TREATE함수를 사용할수 있다.