-
簡介
-
如果需要將一張數據表中的數據轉換爲對象的形式操作,就可以利用對象視圖來完成;
- 利用對象視圖,可以將指定視圖查詢語句的數據按照順序填充到相應對象的屬性中,這樣就可以在操作視圖時直接將數據以對象的形式返回;
-
示例1:定義類,此類的結構與emp表結構一致
-
CREATE OR REPLACE TYPE emp_table_object AS OBJECT ( atri_empno NUMBER(4) , atri_ename VARCHAR2(10) , atri_job VARCHAR2(9) , atri_mgr NUMBER(4) , atri_hiredate DATE , atri_sal NUMBER(7,2) , atri_comm NUMBER(7,2) , atri_deptno NUMBER(2) , MEMBER FUNCTION tostring RETURN VARCHAR2 ) NOT FINAL ; / CREATE OR REPLACE TYPE BODY emp_table_object AS MEMBER FUNCTION tostring RETURN VARCHAR2 AS BEGIN RETURN '僱員編號:' || SELF.atri_empno || ',姓名:' || SELF.atri_ename || ',職位:' || SELF.atri_job || ',僱傭日期:' || SELF.atri_hiredate || ',工資:' || SELF.atri_sal || ',佣金:' || SELF.atri_comm ; END ; END ; / |
本程序emp_table_objectl類中定義的屬性與emp表中一樣,這樣就可以將emp表中的數據通過對象視圖轉變爲emp_table_object類的對象 |
- 語法:創建對象視圖
CREATE OR REPLACE VIEW
視圖名稱 OF 類 |
本語法中"OF語句"表示數據要轉換爲對象的所屬類,而WITH OBJECT IDENTIFIER表示要設置一個對象標識符(OID),對象標識符的主要功能是使用一個個標記來唯一地標記一個對象,當創建完是對象視圖後,Oracle會自動產生一個OID |
- 示例1:創建對象視圖
CREATE OR REPLACE VIEW v_myview OF emp_table_object WITH OBJECT IDENTIFIER(atri_empno) AS SELECT empno,ename,job,mgr,hiredate,sal,comm,deptno FROM emp ; |
本程序將emp表中的全部數據通過對象視圖轉變爲emp_table_object類的對象,這樣在進行程序編寫時,只需要通過對象視圖就可以取得相應對象 |
-
接上例:編寫PL/SQL訪問視圖
DECLARE v_emp emp_table_object ; BEGIN SELECT VALUE(ev) INTO v_emp FROM v_myview ev WHERE atri_empno=7839 ; DBMS_OUTPUT.put_line(v_emp.tostring()) ; END ; / |
此時的程序塊直接查詢了對象視圖,這樣就會將7839僱員的信息以對象的方式返回,直接輸出時,就可以調用tostring()函數取得相應的數據 |