TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-18 |
제목 | ORACLE8 : OBJECT VIEW 개념과 사용법 | ||
---|---|---|---|
개요
==== 일반적인 relational data에 대해서 object-oriented application이 access 할 수 있도록 view를 생성하여 interface할 수 있는데 이를 object view라고 지칭한다. object view를 이용하므로 해서 다음과 같은 이점을 얻을 수 있다. . object-oriented application이 relational data를 access할 수 있다. . 기존의 relational data에 근간한 application들도 그대로 이용할 수 있다. . INSTEAD OF trigger를 이용하면 object view를 통해서도 data를 update할 수 있다. 사용예 ====== -- -- base table(relational table) 생성 -- CREATE TABLE ord (ord_id NUMBER(9) PRIMARY KEY, cust_id NUMBER(6)) ; CREATE TABLE line_item (ord_id NUMBER(9) REFERENCES ord, prod_id NUMBER(6), price NUMBER(9,2), quantity NUMBER(5)) ; -- -- object type생성 -- CREATE OR REPLACE TYPE line_item_type AS OBJECT (prod_id NUMBER(6), price NUMBER(9,2), quantity NUMBER(5)) ; / CREATE OR REPLACE TYPE line_item_array_type AS VARRAY(100) OF line_item_type ; / -- -- object view생성 -- CREATE OR REPLACE VIEW ord_item AS SELECT o.ord_id, o.cust_id, CAST(MULTISET(SELECT prod_id, price, quantity FROM line_item i WHERE i.ord_id = o.ord_id) AS line_item_array_type) AS line_items FROM ord o ; -- -- trigger 생성 -- CREATE OR REPLACE TRIGGER ord_item_insert INSTEAD OF INSERT ON ord_item FOR EACH ROW BEGIN INSERT INTO ord VALUES (:NEW.ord_id, :NEW.cust_id) ; FOR i IN 1..:NEW.line_items.COUNT LOOP INSERT INTO line_item VALUES (:NEW.ord_id, :NEW.line_items(i).prod_id, :NEW.line_items(i).price, :NEW.line_items(i).quantity) ; END LOOP ; END ; / -- -- object view를 통한 insert작업 -- INSERT INTO ord_item VALUES (900,950, line_item_array_type( line_item_type (100,14,700), line_item_type (200,17.5,800))) ; -- -- base table에 data입력 확인 -- SELECT * FROM ord ; ORD_ID CUST_ID ---------- ---------- 900 950 SELECT * FROM line_item ; ORD_ID PROD_ID PRICE QUANTITY ---------- ---------- ---------- ---------- 900 100 14 700 900 200 17.5 800 -- -- object view를 통한 입력자료 확인 -- SELECT o.ord_id, o.cust_id, i.prod_id, i.price, i.quantity FROM ord_item o, TABLE(o.line_items) i WHERE i.prod_id in (100,200) ; ORD_ID CUST_ID PROD_ID PRICE QUANTITY ---------- ---------- ---------- ---------- ---------- 900 950 100 14 700 900 950 200 17.5 800 |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |