Oracle12C--對象視圖(67)

  • 簡介
    • 如果需要將一張數據表中的數據轉換爲對象的形式操作,就可以利用對象視圖來完成;
      • 利用對象視圖,可以將指定視圖查詢語句的數據按照順序填充到相應對象的屬性中,這樣就可以在操作視圖時直接將數據以對象的形式返回;
    • 示例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
WITH OBJECT IDENTIFIER(主鍵對象)
AS 子查詢;

本語法中"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()函數取得相應的數據

發佈了201 篇原創文章 · 獲贊 62 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章