在創(chuàng)建并初始化對象變量后,可使用以下形式的點表示法來引用各個屬性。

object.attribute

object 是分配給對象變量的標識符。attribute 是對象類型屬性的標識符。

如果 attribute 本身屬于某一對象類型,則引用必須采用以下形式:

object.attribute.attribute_inner

attribute_inner 是一個標識符,屬于 attribute 在其 object 定義中引用的對象類型。

以下示例在上一匿名塊的基礎(chǔ)上進行了擴展,以顯示分配給 emp_obj_typ 對象的值。

DECLARE
    v_emp          EMP_OBJ_TYP;
BEGIN
    v_emp := emp_obj_typ(9001,'JONES',
        addr_obj_typ('123 MAIN STREET','EDISON','NJ',08817));
    DBMS_OUTPUT.PUT_LINE('Employee No   : ' || v_emp.empno);
    DBMS_OUTPUT.PUT_LINE('Name          : ' || v_emp.ename);
    DBMS_OUTPUT.PUT_LINE('Street        : ' || v_emp.addr.street);
    DBMS_OUTPUT.PUT_LINE('City/State/Zip: ' || v_emp.addr.city || ', ' ||
        v_emp.addr.state || ' ' || LPAD(v_emp.addr.zip,5,'0'));
END;

下面是此匿名塊的輸出:

Employee No   : 9001
Name          : JONES
Street        : 123 MAIN STREET
City/State/Zip: EDISON, NJ 08817

方法的調(diào)用方式與屬性的調(diào)用方式類似。

在創(chuàng)建并初始化對象變量后,將使用以下形式的點表示法調(diào)用成員存儲過程或函數(shù):

object.prog_name

object 是分配給對象變量的標識符。prog_name 是存儲過程或函數(shù)的標識符。

靜態(tài)存儲過程或函數(shù)不使用對象變量進行調(diào)用。而是,此類存儲過程或函數(shù)使用對象類型名稱進行調(diào)用:

object_type.prog_name

object_type 是分配給對象類型的標識符。prog_name 是此類存儲過程或函數(shù)的標識符。

通過調(diào)用成員存儲過程 display_emp,可重復(fù)上一匿名塊的結(jié)果:

DECLARE
    v_emp          EMP_OBJ_TYP;
BEGIN
    v_emp := emp_obj_typ(9001,'JONES',
        addr_obj_typ('123 MAIN STREET','EDISON','NJ',08817));
    v_emp.display_emp;
END;

下面是此匿名塊的輸出:

Employee No   : 9001
Name          : JONES
Street        : 123 MAIN STREET
City/State/Zip: EDISON, NJ 08817

以下匿名塊創(chuàng)建 dept_obj_typ 的實例并調(diào)用成員存儲過程 display_dept:

DECLARE
    v_dept          DEPT_OBJ_TYP := dept_obj_typ (20);
BEGIN
    v_dept.display_dept;
END;

下面是此匿名塊的輸出:

Dept No    : 20
Dept Name  : RESEARCH

dept_obj_typ 中定義的靜態(tài)函數(shù)可通過由對象類型名稱進行限定來直接調(diào)用,如下所示:

BEGIN
    DBMS_OUTPUT.PUT_LINE(dept_obj_typ.get_dname(20));
END;

RESEARCH