Referencing an Object v13
Once an object variable is created and initialized, individual attributes can be referenced using dot notation of the form:
<object>.<attribute>
object is the identifier assigned to the object variable. attribute is the identifier of an object type attribute.
If attribute, itself, is of an object type, then the reference must take the form:
<object>.<attribute>.<attribute_inner>
attribute_inner is an identifier belonging to the object type to which attribute references in its definition of object.
The following example expands upon the previous anonymous block to display the values assigned to the emp_obj_typ object.
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;The following is the output from this anonymous block.
Employee No : 9001 Name : JONES Street : 123 MAIN STREET City/State/Zip: EDISON, NJ 08817
Methods are called in a similar manner as attributes.
Once an object variable is created and initialized, member procedures or functions are called using dot notation of the form:
<object>.<prog_name>
object is the identifier assigned to the object variable. prog_name is the identifier of the procedure or function.
Static procedures or functions are not called utilizing an object variable. Instead the procedure or function is called utilizing the object type name:
<object_type>.<prog_name>
object_type is the identifier assigned to the object type. prog_name is the identifier of the procedure or function.
The results of the previous anonymous block can be duplicated by calling the member procedure 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;The following is the output from this anonymous block.
Employee No : 9001 Name : JONES Street : 123 MAIN STREET City/State/Zip: EDISON, NJ 08817
The following anonymous block creates an instance of dept_obj_typ and calls the member procedure display_dept:
DECLARE
v_dept DEPT_OBJ_TYP := dept_obj_typ (20);
BEGIN
v_dept.display_dept;
END;The following is the output from this anonymous block.
Dept No : 20 Dept Name : RESEARCH
The static function defined in dept_obj_typ can be called directly by qualifying it by the object type name as follows:
BEGIN
DBMS_OUTPUT.PUT_LINE(dept_obj_typ.get_dname(20));
END;
RESEARCH