2016年3月18日 星期五

物件導向七(物件view) (PL/SQL 三十四)

※新增類別

CREATE OR REPLACE TYPE v_emp IS OBJECT(
    v_empno NUMBER(4),
    v_ename VARCHAR2(10),
    v_job VARCHAR2(9),
    v_mgr NUMBER(4),
    v_hiredate DATE,
    v_sal NUMBER(7,2),
    v_comm NUMBER(7,2),
    v_deptno NUMBER(2),
    
    MEMBER FUNCTION to_string RETURN VARCHAR2
) NOT FINAL;

※屬性的類型和順序必需和EMP表的類型和順序一模一樣



※BODY

CREATE OR REPLACE TYPE BODY v_emp IS
    MEMBER FUNCTION to_string RETURN VARCHAR2 IS
    BEGIN
        RETURN SELF.v_empno || ':' || SELF.v_ename;
    END;
END;

※隨便寫一個測試



※物件view語法

CREATE OR REPLACE VIEW view_test OF v_emp
    WITH OBJECT IDENTIFIER(v_empno) AS
SELECT * FROM emp;

※如果權限不夠要用有權限的登入,下「GRANT CREATE VIEW TO 使用者;」



※測試

DECLARE
    v v_emp;
BEGIN
    SELECT VALUE(vt) INTO v FROM view_test vt WHERE v_empno=7499;
    DBMS_OUTPUT.PUT_LINE(v.to_string);
END;

沒有留言:

張貼留言