Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Object Oriented
 

Use self to reference member variable

SQL>  CREATE OR REPLACE TYPE myType   2  AUTHID CURRENT_USER IS OBJECT   3  ( my_number NUMBER   4  , my_name   VARCHAR2(20 CHAR)   5  , CONSTRUCTOR FUNCTION myType RETURN SELF AS RESULT   6  , CONSTRUCTOR FUNCTION myType (my_number NUMBER, my_name   VARCHAR2 )RETURN SELF AS RESULT   7  , MEMBER PROCEDURE print_instance_variable   8  , ORDER MEMBER FUNCTION equals( my_class myType ) RETURN NUMBER )   9  INSTANTIABLE NOT FINAL;  10  / Type created. SQL> SQL> SHOW ERRORS No errors. SQL> SQL>  SQL> CREATE OR REPLACE TYPE BODY myType AS   2   3       4    CONSTRUCTOR FUNCTION myType   5    RETURN SELF AS RESULT IS   6   7         8      my_instance_number NUMBER := 0;   9      my_instance_name   VARCHAR2(20 CHAR) := '';  10  11    BEGIN  12  13        14      SELF.my_number := my_instance_number;  15      SELF.my_name := my_instance_name;  16  17        18      RETURN;  19  20    END;  21  22      23    CONSTRUCTOR FUNCTION myType( my_number NUMBER , my_name   VARCHAR2 )  24    RETURN SELF AS RESULT IS  25  26    BEGIN  27  28        29      SELF.my_number := my_number;  30      SELF.my_name := my_name;  31  32        33      RETURN;  34  35    END;  36  37      38    MEMBER PROCEDURE print_instance_variable IS  39  40    BEGIN  41        42      DBMS_OUTPUT.PUT_LINE('Instance Number ['||SELF.my_number||']');  43      DBMS_OUTPUT.PUT_LINE('Instance Name   ['||SELF.my_name||']');  44  45    END;  46  47      48    ORDER MEMBER FUNCTION equals( my_class myType )  49    RETURN NUMBER IS  50  51        52      false_value NUMBER := 0;  53      true_value  NUMBER := 1;  54  55    BEGIN  56  57        58      IF SELF.my_number = my_class.my_number AND  59         SELF.my_name = my_class.my_name     THEN  60  61          62        RETURN true_value;  63  64      ELSE  65  66          67        RETURN false_value;  68  69      END IF;  70  71    END;  72  73  END;  74  / Type body created. SQL> SQL> SHOW ERRORS No errors. SQL>