· 8 years ago · May 13, 2018, 07:42 AM
1create or replace TYPE SIMPLE_TYPE AS OBJECT (ID NUMBER(38), NAME VARCHAR2(20));
2
3DECLARE
4 TYPE ObjectList IS TABLE OF SIMPLE_TYPE;
5 tmp SIMPLE_TYPE := SIMPLE_TYPE(1, 'a');
6 o ObjectList := new ObjectList(SIMPLE_TYPE(2, 'a'), SIMPLE_TYPE(3, 'a'));
7BEGIN
8 IF tmp.EXISTS(tmp) THEN
9 dbms_output.put_line('OK, exists.');
10 END IF;
11END;
12
13DECLARE
14 TYPE NumList IS TABLE OF INTEGER;
15 n NumList := NumList(1,3,5,7);
16BEGIN
17 n.DELETE(2);
18 IF n.EXISTS(1) THEN
19 dbms_output.put_line('OK, element #1 exists.');
20 END IF;
21 IF n.EXISTS(3) = FALSE THEN
22 dbms_output.put_line('OK, element #2 has been deleted.');
23 END IF;
24 IF n.EXISTS(99) = FALSE THEN
25 dbms_output.put_line('OK, element #99 does not exist at all.');
26 END IF;
27END;
28
29tmp SIMPLE_TYPEE := SIMPLE_TYPE(1, 'a');
30
31…
32
33IF tmp.EXISTS(tmp) THEN
34
35CREATE TYPE ObjectList IS TABLE OF SIMPLE_TYPE;
36
37DECLARE
38 tmp SIMPLE_TYPE := SIMPLE_TYPE(1, 'a');
39 o ObjectList := new ObjectList(SIMPLE_TYPE(2, 'a'), SIMPLE_TYPE(3, 'a'));
40 myid INT;
41BEGIN
42 SELECT 1
43 INTO myid
44 FROM TABLE(o) q
45 WHERE SIMPLE_TYPE(q.id, q.name) = tmp
46 AND rownum = 1;
47 IF (myid = 1) THEN
48 dbms_output.put_line('OK, exists.');
49 END IF;
50END;
51
52SQL> create or replace type simple_type as object
53 2 ( id number
54 3 , name varchar2(30)
55 4 , map member function compare return varchar2);
56 5 /
57
58Type created.
59
60SQL>
61SQL> create or replace type body simple_type as
62 2 map member function compare return varchar2
63 3 is
64 4 return_value integer;
65 5 begin
66 6 return to_char(id, '0000000')||name;
67 7 end compare;
68 8 end;
69 9 /
70
71Type body created.
72
73SQL>
74SQL> set serveroutput on size unlimited
75SQL>
76SQL> declare
77 2 type objectlist is table of simple_type;
78 3 tmp simple_type := simple_type(1, 'a');
79 4 o objectlist := new objectlist(simple_type(2, 'a'), simple_type(3, 'a'));
80 5 begin
81 6 if tmp MEMBER OF o then
82 7 dbms_output.put_line('ok, exists.');
83 8 else
84 9 dbms_output.put_line('search me');
85 10 end if;
86 11 end;
87 12 /
88search me
89
90PL/SQL procedure successfully completed.
91
92SQL>