Referencing an object v18
Syntax
After you create and initialize an object variable, you can reference individual attributes using dot notation of the form:
<object>.<attribute>
Where:
object is the identifier assigned to the object variable.
attribute is the identifier of an object type attribute.
If attribute is of an object type, then the reference must take the form:
<object>.<attribute>.<attribute_inner>
Where attribute_inner is an identifier belonging to the object type to which attribute references in its definition of object.
Examples
This example displays 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>
Where:
object is the identifier assigned to the object variable.
prog_name is the identifier of the procedure or function.
Static procedures or functions aren't called using an object variable. Instead call the procedure or function using the object type name:
<object_type>.<prog_name>
Where:
object_type is the identifier assigned to the object type.
prog_name is the identifier of the procedure or function.
You can duplicate the results of the previous anonymous block 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
This 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
You can call the static function defined in dept_obj_typ directly by qualifying it by the object type name as follows:
BEGIN DBMS_OUTPUT.PUT_LINE(dept_obj_typ.get_dname(20)); END; RESEARCH