Mega Code Archive

 
Categories / Oracle PLSQL / Object Oriented Database
 

This script demonstrates attribute chaining

SQL> SQL> CREATE OR REPLACE TYPE addressType AS OBJECT (   2     address1   VARCHAR2 (30 CHAR),   3     address2   VARCHAR2 (30 CHAR),   4     city       VARCHAR2 (30 CHAR),   5     state      CHAR (2 CHAR)   6  )   7  INSTANTIABLE FINAL;   8  / Type created. SQL> SQL> CREATE OR REPLACE TYPE personType AS OBJECT (   2     fname   VARCHAR2 (20),   3     lname    VARCHAR2 (20)   4  )   5  INSTANTIABLE FINAL;   6  / SQL> SQL> CREATE OR REPLACE TYPE contactType AS OBJECT (   2     NAME      personType,   3     address   addressType,   4     phone     NUMBER (10)   5  )   6  INSTANTIABLE FINAL;   7  / Type created. SQL> SQL> CREATE OR REPLACE TYPE publisher_obj AS OBJECT (   2     pub_name       VARCHAR2 (30),   3     contact_info   contactType,   4     MEMBER PROCEDURE show_contact   5  )   6  INSTANTIABLE FINAL;   7  / SP2-0816: Type created with compilation warnings SQL> SQL> CREATE OR REPLACE TYPE BODY publisher_obj   2  AS   3     MEMBER PROCEDURE show_contact   4     IS   5     BEGIN   6        DBMS_OUTPUT.put_line (SELF.pub_name);   7        DBMS_OUTPUT.put_line (SELF.contact_info.NAME.fname|| ' '|| SELF.contact_info.NAME.lname);   8        DBMS_OUTPUT.put_line (SELF.contact_info.address.address1);   9        DBMS_OUTPUT.put_line (SELF.contact_info.address.city);  10        DBMS_OUTPUT.put_line (SELF.contact_info.address.state);  11        DBMS_OUTPUT.put_line (SELF.contact_info.phone);  12        RETURN;  13     END show_contact;  14  END;  15  / SP2-0818: Type Body created with compilation warnings SQL> SQL>  SET SERVEROUTPUT ON SIZE 1000000 SQL>  DECLARE   2      v_person      personType    := personType ('R', 'A');   3      v_address     addressType   := addressType ('1 Way', NULL, 'Springs', 'CO');   4      v_contact     contactType := contactType (v_person, v_address, 5);   5      v_publisher   publisher_obj := publisher_obj ('Press', v_contact);   6   BEGIN   7     v_publisher.show_contact;   8   END;   9   / Press R A 1 Way Springs CO 5 PL/SQL procedure successfully completed. SQL>