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