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>
SQL>