在創(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