Accessing the object table by reference : Object Table « Object Oriented « Oracle PL/SQL Tutorial






The built-in function ref returns a pointer to the object.

The variable you need to declare is not of type employeeType, but ref employeeType.

SQL>
SQL>
SQL> create type employeeType is object (
  2      empNo    NUMBER,
  3      eName    VARCHAR2(10),
  4      job      VARCHAR2(9),
  5      mgr      NUMBER,
  6      hireDate DATE,
  7      sal      NUMBER,
  8      comm     NUMBER,
  9      deptNo   NUMBER,
 10      member procedure p_changeName (i_newName_tx VARCHAR2),
 11      member function  f_getIncome_nr  return VARCHAR2
 12  )
 13  /

SP2-0816: Type created with compilation warnings

SQL>
SQL> create or replace type body employeeType as
  2      member function f_getIncome_nr return VARCHAR2 is
  3      begin
  4          return sal+comm;
  5      end f_getIncome_nr;
  6      member procedure p_changeName(i_newName_tx VARCHAR2) is
  7      begin
  8          eName:=i_newName_tx;
  9      end p_changeName;
 10  end;
 11  /

SP2-0818: Type Body created with compilation warnings

SQL>
SQL> create table t_emp of employeeType;

Table created.

SQL>
SQL>
SQL>
SQL> declare
  2      v_emp_oref ref employeeType;
  3      v_employeeType employeeType;
  4
  5  begin
  6      v_employeeType:=employeeType(100,'TestEmp',null,null,sysdate,1000,500,10);
  7      insert into t_emp values v_employeeType;
  8
  9
 10      select ref(t) into v_emp_oref from t_emp t where empNo=100;
 11
 12      update t_emp t set sal=sal+100 where ref(t)=v_emp_oref;
 13  end;
 14  /

PL/SQL procedure successfully completed.

SQL>
SQL> select * from t_emp;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
       100 TestEmp                         09-JUN-07       1100        500         10

SQL>
SQL> drop table t_emp;

Table dropped.

SQL> drop type employeeType;

Type dropped.

SQL>








32.9.Object Table
32.9.1.You can also use an object type to define an entire table, and the table is known as an object table.
32.9.2.Inserting a row into an object table
32.9.3.One-step INSERTs into a Table that Contains Row Objects
32.9.4.INSERT Values into a Table that Contains Row Objects (TCRO)
32.9.5.Insert data just as one would ordinarily do with a common SQL table:
32.9.6.SELECTing Individual Columns in Table that Contains Row Objects
32.9.7.Selecting Rows from the object Table
32.9.8.SELECT from the object-oriented table
32.9.9.Updating a Row in the object Table
32.9.10.UPDATE a Table that Contains Row Objects (TCRO)
32.9.11.Accessing the object table by reference
32.9.12.Create a table based on an Object with methods
32.9.13.Alter table to add a user-defined type column