forked from dlee0113/oracle_pl_sql_programming
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path11g_gen_invoc_from_doc.sql
67 lines (60 loc) · 1.43 KB
/
11g_gen_invoc_from_doc.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/* Formatted on 2007/08/23 18:52 (Formatter Plus v4.8.8) */
CREATE TYPE person_typ AS OBJECT (
idno NUMBER,
NAME VARCHAR2 (30),
phone VARCHAR2 (20),
MAP MEMBER FUNCTION get_idno
RETURN NUMBER,
MEMBER FUNCTION show
RETURN VARCHAR2
)
NOT FINAL;
/
CREATE TYPE BODY person_typ
AS
MAP MEMBER FUNCTION get_idno
RETURN NUMBER
IS
BEGIN
RETURN idno;
END;
-- function that can be overriden by subtypes
MEMBER FUNCTION show
RETURN VARCHAR2
IS
BEGIN
RETURN 'Id: ' || TO_CHAR (idno) || ', Name: ' || NAME;
END;
END;
/
CREATE TYPE student_typ UNDER person_typ (
dept_id NUMBER,
major VARCHAR2 (30),
OVERRIDING MEMBER FUNCTION show
RETURN VARCHAR2
)
NOT FINAL;
/
CREATE TYPE BODY student_typ
AS
OVERRIDING MEMBER FUNCTION show
RETURN VARCHAR2
IS
BEGIN
RETURN (self AS person_typ).show || ' -- Major: ' || major ;
END;
END;
/
DECLARE
myvar student_typ := student_typ (100, 'Sam', '6505556666', 100, 'Math');
NAME VARCHAR2 (100);
BEGIN
NAME := (myvar AS person_typ).show; --Generalized invocation
END;
/
/*======================================================================
| Supplement to the fifth edition of Oracle PL/SQL Programming by Steven
| Feuerstein with Bill Pribyl, Copyright (c) 1997-2009 O'Reilly Media, Inc.
| To submit corrections or find more code samples visit
| http://oreilly.com/catalog/9780596514464/
*/