Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Object Oriented
 

User-Defined Constructors

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>