A sample object type with an ORDER member function. : Member Function « Object Oriented « Oracle PL/SQL Tutorial






SQL>
SQL>
SQL>
SQL> CREATE OR REPLACE TYPE myType AUTHID CURRENT_USER IS OBJECT
  2  ( my_number NUMBER
  3  , my_name   VARCHAR2(20 CHAR)
  4  , CONSTRUCTOR FUNCTION myType RETURN SELF AS RESULT
  5  , CONSTRUCTOR FUNCTION myType ( my_number NUMBER, my_name   VARCHAR2 )RETURN SELF AS RESULT
  6  , MEMBER PROCEDURE print_instance_variable
  7  , ORDER MEMBER FUNCTION equals( my_class myType ) RETURN NUMBER )INSTANTIABLE NOT FINAL;
  8  /

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      my_instance_name   VARCHAR2(20 CHAR) := '';
  6
  7    BEGIN
  8      SELF.my_number := my_instance_number;
  9      SELF.my_name := my_instance_name;
 10      RETURN;
 11
 12    END;
 13
 14    CONSTRUCTOR FUNCTION myType( my_number NUMBER , my_name   VARCHAR2 )
 15    RETURN SELF AS RESULT IS
 16    BEGIN
 17      SELF.my_number := my_number;
 18      SELF.my_name := my_name;
 19      RETURN;
 20    END;
 21
 22    MEMBER PROCEDURE print_instance_variable IS
 23    BEGIN
 24      DBMS_OUTPUT.PUT_LINE('Number:'||SELF.my_number);
 25      DBMS_OUTPUT.PUT_LINE('Name  :'||SELF.my_name);
 26    END;
 27    ORDER MEMBER FUNCTION equals( my_class myType )RETURN NUMBER IS
 28      false_value NUMBER := 0;
 29      true_value  NUMBER := 1;
 30    BEGIN
 31      IF SELF.my_number = my_class.my_number AND SELF.my_name = my_class.my_name THEN
 32        RETURN true_value;
 33      ELSE
 34        RETURN false_value;
 35      END IF;
 36    END;
 37  END;
 38  /

Type body created.

SQL>
SQL> DECLARE
  2    obj1 myType := myType;
  3    obj2 myType := myType(1,'My Object');
  4
  5  BEGIN
  6    obj1.print_instance_variable;
  7
  8    obj2.print_instance_variable;
  9
 10    IF obj1.equals(obj2) = 1 THEN
 11      DBMS_OUTPUT.PUT_LINE('equal.');
 12    ELSE
 13      DBMS_OUTPUT.PUT_LINE('unequal.');
 14    END IF;
 15
 16  END;
 17  /
Number:0
Name  :
Number:1
Name  :My Object
unequal.

PL/SQL procedure successfully completed.








32.3.Member Function
32.3.1.Type with member function
32.3.2.Call Object member function
32.3.3.Type with toString and mapping functions
32.3.4.A sample object type with a MAP member function
32.3.5.A sample object type with an ORDER member function.
32.3.6.This script demonstrates the static method.
32.3.7.Compare two type object instances
32.3.8.This script builds a sample object type with constructor.