Object Oriented Oracle PLSQL Tutorial

SQL>
SQL> CREATE OR REPLACE TYPE EmployeeType AS OBJECT (
  2    id         NUMBER,
  3    first_name VARCHAR2(10),
  4    last_name  VARCHAR2(10),
  5    dob        DATE,
  6    phone      VARCHAR2(12),
  7    CONSTRUCTOR FUNCTION EmployeeType(
  8      p_id         NUMBER,
  9      p_first_name VARCHAR2,
 10      p_last_name  VARCHAR2
 11    ) RETURN SELF AS RESULT,
 12    CONSTRUCTOR FUNCTION EmployeeType(
 13      p_id         NUMBER,
 14      p_first_name VARCHAR2,
 15      p_last_name  VARCHAR2,
 16      p_dob        DATE,
 17      p_phone      VARCHAR2
 18    ) RETURN SELF AS RESULT
 19  );
 20  /
Type created.
SQL> CREATE OR REPLACE TYPE BODY EmployeeType AS
  2    CONSTRUCTOR FUNCTION EmployeeType(
  3      p_id         NUMBER,
  4      p_first_name VARCHAR2,
  5      p_last_name  VARCHAR2
  6    ) RETURN SELF AS RESULT IS
  7    BEGIN
  8      SELF.id := p_id;
  9      SELF.first_name := p_first_name;
 10      SELF.last_name := p_last_name;
 11      SELF.dob := SYSDATE;
 12      SELF.phone := '555-1212';
 13      RETURN;
 14    END;
 15    CONSTRUCTOR FUNCTION EmployeeType(
 16      p_id         NUMBER,
 17      p_first_name VARCHAR2,
 18      p_last_name  VARCHAR2,
 19      p_dob        DATE,
 20      p_phone      VARCHAR2
 21    ) RETURN SELF AS RESULT IS
 22    BEGIN
 23      SELF.id := p_id;
 24      SELF.first_name := p_first_name;
 25      SELF.last_name := p_last_name;
 26      SELF.dob := p_dob;
 27      SELF.phone := p_phone;
 28      RETURN;
 29    END;
 30  END;
 31  /
Type body created.
SQL>
SQL> DESC EmployeeType;
 Name               Null?    Type
----------------------------------------------------------------------------------------------------
 ID                          NUMBER
 FIRST_NAME                  VARCHAR2(10)
 LAST_NAME                   VARCHAR2(10)
 DOB                         DATE
 PHONE                       VARCHAR2(12)
METHOD
------
 FINAL CONSTRUCTOR FUNCTION EMPLOYEETYPE RETURNS SELF AS RESULT
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_ID                           NUMBER                  IN
 P_FIRST_NAME                   VARCHAR2                IN
 P_LAST_NAME                    VARCHAR2                IN
METHOD
------
 FINAL CONSTRUCTOR FUNCTION EMPLOYEETYPE RETURNS SELF AS RESULT
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_ID                           NUMBER                  IN
 P_FIRST_NAME                   VARCHAR2                IN
 P_LAST_NAME                    VARCHAR2                IN
 P_DOB                          DATE                    IN
 P_PHONE                        VARCHAR2                IN
SQL>
SQL> CREATE TABLE emp OF EmployeeType;
Table created.
SQL>
SQL> desc emp;
 Name                Null?    Type
----------------------------------------------------------------------------------------------------
 ID                           NUMBER
 FIRST_NAME                   VARCHAR2(10)
 LAST_NAME                    VARCHAR2(10)
 DOB                          DATE
 PHONE                        VARCHAR2(12)
SQL>
SQL> drop table emp;
Table dropped.
SQL>