在创建并初始化对象变量后,可使用以下形式的点表示法来引用各个属性。

object.attribute

object 是分配给对象变量的标识符。attribute 是对象类型属性的标识符。

如果 attribute 本身属于某一对象类型,则引用必须采用以下形式:

object.attribute.attribute_inner

attribute_inner 是一个标识符,属于 attribute 在其 object 定义中引用的对象类型。

以下示例在上一匿名块的基础上进行了扩展,以显示分配给 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

方法的调用方式与属性的调用方式类似。

在创建并初始化对象变量后,将使用以下形式的点表示法调用成员存储过程或函数:

object.prog_name

object 是分配给对象变量的标识符。prog_name 是存储过程或函数的标识符。

静态存储过程或函数不使用对象变量进行调用。而是,此类存储过程或函数使用对象类型名称进行调用:

object_type.prog_name

object_type 是分配给对象类型的标识符。prog_name 是此类存储过程或函数的标识符。

通过调用成员存储过程 display_emp,可重复上一匿名块的结果:

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

以下匿名块创建 dept_obj_typ 的实例并调用成员存储过程 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 中定义的静态函数可通过由对象类型名称进行限定来直接调用,如下所示:

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

RESEARCH