Skip Headers

오라클 10g 함수
10g Release 1 (10.1)
Go to Documentation Home
HOME
Go to Book List
ORA_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
ORA_10G
Go to Feedback page
MAIL

Go to previous page
Previous
Go to next page
Next

SYS_TYPEID

문법

MAIN

sys_typeid::=
Description of sys_typeid.gif follows

그림 설명
 

목적

MAIN

SYS_TYPEID함수는 피연산자(operand)의 대부분 지정한 형태의 typeid를 반환한다.이 값은 주로 치환가능한 열의 기초가 되는 형태 판별 열을 식별하는데 이용한다. 예를 들면, 형태-판별 열에서 색인을 만들기 위해서 SYS_TYPEID에 의해 반환되는 값을 이용할수 있다.

Object 형태 피연자에서 이함수를 이용할수 있다. 모든 최종 root object형태(형태 계층에 속하지 않는 최종 형태)는 Null typeid를 가진다. 오라클 데이터 베이스는 type 계층에 속하는 모든 형태에 unique non-null typeid를 할당한다..

예제

MAIN

CREATE TYPE Person_typ AS OBJECT ( ssn NUMBER, name VARCHAR2(30), address VARCHAR2(100)) NOT FINAL;

CREATE TABLE persons OF Person_typ;
INSERT INTO persons
VALUES (Person_typ(1243, ’Bob’, ’121 Front St’));
INSERT INTO persons
VALUES (Student_typ(3456, ’Joe’, ’34 View’, 12, ’HISTORY’));
INSERT INTO persons
VALUES (PartTimeStudent_typ(5678, ’Tim’, 13, ’PHYSICS’, 20));

다음 예제는 "Substitutable Table and Column Examples".에서 만들어진 persons와 books 테이블을 이용한다. 양쪽 테이블 모두 "Type Hierarchy Example".에서 생성된 person_t 타입을 사용한다. 첫번째 쿼리는 persons 테이블에서 저장된 object instances의 가장 많이 지정한 타입을 반환한다.

SELECT name, SYS_TYPEID(VALUE(p)) "Type_id" FROM persons p;

NAME                      Type_id
------------------------- --------------------------------
Bob                       01
Joe                       02
Tim                       03

다음 쿼리는 books테이블에 저장된 저자의 가장 많이 지정된 타입을 반환한다.

CREATE TYPE person_t AS OBJECT (name VARCHAR2(100), ssn NUMBER)
NOT FINAL;

CREATE TABLE books (title VARCHAR2(100), author person_t);
CREATE TYPE employee_t UNDER person_t (department_id NUMBER, salary NUMBER) NOT FINAL;
CREATE TYPE part_time_emp_t UNDER employee_t (num_hrs NUMBER);

INSERT INTO books VALUES ('An Autobiography', person_t('Bob', 1234));
INSERT INTO books VALUES ('Business Rules', employee_t('Joe', 3456, 12, 10000));
INSERT INTO books VALUES ('Mixing School and Work', part_time_emp_t('Tim', 5678, 13, 1000, 20));
 

SELECT b.title, b.author.name, SYS_TYPEID(author)
       "Type_ID" FROM books b;

TITLE                     AUTHOR.NAME          Type_ID
------------------------- -------------------- -------------------
An Autobiography          Bob                  01
Business Rules            Joe                  02
Mixing School and Work    Tim                  03

테이블의 type-discriminant 열에 인덱스를 생성하기 위해서 SYS_TYPEID 함수를 이용한다.