Mega Code Archive

 
Categories / Oracle PLSQL / Object Oriented Database
 

A sample object type with a MAP member function

SQL> SQL> CREATE OR REPLACE TYPE myType AUTHID CURRENT_USER IS OBJECT   2  ( my_number NUMBER   3  , CONSTRUCTOR FUNCTION myType RETURN SELF AS RESULT   4  , CONSTRUCTOR FUNCTION myType( my_number NUMBER )RETURN SELF AS RESULT   5  , MEMBER PROCEDURE print_instance_variable   6  , MAP MEMBER FUNCTION equals RETURN NUMBER )INSTANTIABLE NOT FINAL;   7  / Type created. SQL> SQL> CREATE OR REPLACE TYPE BODY myType AS   2    CONSTRUCTOR FUNCTION myType   3    RETURN SELF AS RESULT IS   4      my_instance_number NUMBER := 0;   5    BEGIN   6      SELF.my_number := my_instance_number;   7      RETURN;   8    END;   9    CONSTRUCTOR FUNCTION myType( my_number NUMBER )  10    RETURN SELF AS RESULT IS  11    BEGIN  12      SELF.my_number := my_number;  13      RETURN;  14    END;  15    MEMBER PROCEDURE print_instance_variable IS  16    BEGIN  17      DBMS_OUTPUT.PUT_LINE('Instance Variable ['||SELF.my_number||']');  18    END;  19    MAP MEMBER FUNCTION equals  20    RETURN NUMBER IS  21    BEGIN  22      RETURN SELF.my_number;  23  24    END;  25  26  END;  27  / Type body created. SQL> SQL> SQL> DECLARE   2    obj1 myType := myType;   3    obj2 myType := myType(1);   4   5  BEGIN   6    obj1.print_instance_variable;   7   8    obj2.print_instance_variable;   9  10    IF obj1 = obj2 THEN  11      DBMS_OUTPUT.PUT_LINE('equal.');  12    ELSE  13      DBMS_OUTPUT.PUT_LINE('unequal.');  14    END IF;  15  16  END;  17  / Instance Variable [0] Instance Variable [1] unequal. PL/SQL procedure successfully completed.