Object Oriented Oracle PLSQL Tutorial

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>