blob: 6d1c6a852dd14d85c5c3e4a70f7487471b77f622 [file] [log] [blame]
Tang Cheng31b95252014-10-23 09:22:35 +08001/* Copyright (c) 2002, 2004, Oracle. All rights reserved. */
2
3/*
4 NAME
5 occidemo.sql - Create OCCI demo objects
6
7 DESCRIPTION
8 SQL Script to create OCCI demo objects
9 Assumes HR schema is setup
10 Assumes system's account passwd to be manager
11 Execute this before any of the OCCI demos are run
12 To drop the objects created by this SQL use occidemod.sql
13
14 MODIFIED
15 sudsrini 03/06/03 - sudsrini_occi_10ir1_demos (include occidemod)
16 idcqe 03/13/01 - Created
17
18*/
19
20
21/* Drop objects before creating them */
22
23@occidemod.sql
24
25connect hr/hr
26
27CREATE TABLE elements (
28 element_name VARCHAR2(25),
29 molar_volume BINARY_FLOAT,
30 atomic_weight BINARY_DOUBLE
31);
32
33CREATE TABLE author_tab (
34 author_id NUMBER,
35 author_name VARCHAR2(25)
36);
37
38INSERT INTO author_tab (author_id, author_name) VALUES (333, 'JOE');
39INSERT INTO author_tab (author_id, author_name) VALUES (444, 'SMITH');
40
41CREATE OR REPLACE TYPE publ_address AS OBJECT (
42 street_no NUMBER,
43 city VARCHAR2(25)
44)
45/
46
47CREATE TABLE publisher_tab (
48 publisher_id NUMBER,
49 publisher_add publ_address
50);
51
52INSERT INTO publisher_tab (publisher_id, publisher_add) VALUES
53(11, publ_address (121, 'NEW YORK'));
54
55CREATE TABLE publ_address_tab OF publ_address;
56
57INSERT INTO publ_address_tab VALUES (22, 'BOSTON');
58INSERT INTO publ_address_tab VALUES (33, 'BUFFALO');
59INSERT INTO publ_address_tab VALUES (44, 'CALIFORNIA');
60
61
62CREATE OR REPLACE TYPE journal AS TABLE OF VARCHAR2(50)
63/
64CREATE TABLE journal_tab (jid NUMBER, jname journal)
65NESTED TABLE jname STORE AS journal_store;
66
67INSERT INTO journal_tab (jid, jname) VALUES (22, journal ('NATION', 'TIMES'));
68INSERT INTO journal_tab (jid, jname) VALUES (33, journal ('CRICKET', 'ALIVE'));
69
70CREATE OR REPLACE TYPE people_obj AS OBJECT (
71 ssn NUMBER,
72 name VARCHAR2(25)
73) NOT FINAL;
74/
75
76CREATE OR REPLACE TYPE librarian UNDER people_obj(
77 empno NUMBER,
78 sal NUMBER(7,2),
79 dob DATE,
80 photo BLOB
81)
82/
83
84CREATE TABLE librarian_tab OF librarian;
85
86INSERT INTO librarian_tab VALUES
87(101, 'DAVE', 1001, 10000, '12-Jan-1970', empty_blob());
88INSERT INTO librarian_tab VALUES
89(102, 'BOB', 1002, 12000, '17-Jan-1970', empty_blob());
90
91CREATE TABLE article_tab (
92 artid NUMBER,
93 artdesc VARCHAR2(4000),
94 artsummary LONG,
95 artfeedbk VARCHAR2(2000)
96);
97
98CREATE OR REPLACE PROCEDURE demo_proc (col1 IN NUMBER, col2 IN OUT VARCHAR2,
99col3 OUT CHAR) AS
100BEGIN
101 col2 := col1 || ' ' || col2 || ' ' || 'IN-OUT';
102 col3 := 'OUT';
103END;
104/
105
106CREATE OR REPLACE FUNCTION demo_fun (col1 IN NUMBER,
107col2 IN OUT VARCHAR2, col3 OUT CHAR) RETURN CHAR AS
108BEGIN
109 col2 := col1 || ' ' || col2 || ' ' || 'IN-OUT';
110 col3 := 'OUT';
111 RETURN 'abcd';
112END;
113/
114
115CREATE TABLE book (bookid NUMBER, summary VARCHAR2(4000));
116
117CREATE TABLE cover (c1 NUMBER(5), c2 VARCHAR2(20));
118
119DECLARE
120ch1 VARCHAR2(4000) := 'aa';
121ch2 VARCHAR2(4000):= '';
122nu NUMBER := 0;
123BEGIN
124 FOR nu IN 1..11 LOOP
125 ch2 := ch1 || ch2; ch1 := ch2;
126 END LOOP;
127 INSERT INTO book (bookid, summary) VALUES (11, ch1);
128END;
129/
130
131CREATE TYPE elecdoc_typ AS OBJECT
132 ( document_typ VARCHAR2(32)
133 , formatted_doc BLOB
134 ) ;
135/
136CREATE TYPE elecdoc_tab AS TABLE OF elecdoc_typ;
137/
138
139CREATE TYPE elheader_typ AS OBJECT
140 ( header_name VARCHAR2(256)
141 , creation_date DATE
142 , header_text VARCHAR2(1024)
143 , logo BLOB
144 );
145/
146
147CREATE TABLE electronic_media
148 ( product_id NUMBER(6)
149 , ad_id NUMBER(6)
150 , ad_composite BLOB
151 , ad_sourcetext CLOB
152 , ad_finaltext CLOB
153 , ad_fltextn NCLOB
154 , ad_elecdocs_ntab elecdoc_tab
155 , ad_photo BLOB
156 , ad_graphic BFILE
157 , ad_header elheader_typ
158 , press_release LONG
159 ) NESTED TABLE ad_elecdocs_ntab STORE AS elecdocs_nestedtab;
160CREATE UNIQUE INDEX printmedia_pk
161 ON electronic_media (product_id, ad_id);
162
163ALTER TABLE electronic_media
164ADD ( CONSTRAINT printmedia__pk
165 PRIMARY KEY (product_id, ad_id)
166 ) ;
167
168
169
170CREATE TYPE people_typ AS OBJECT
171(
172 name VARCHAR2(30),
173 ssn NUMBER,
174 dob DATE
175) not final;
176/
177
178CREATE TABLE people_tab OF people_typ;
179
180INSERT INTO people_tab VALUES (people_typ('john', 111, '01-Jan-1970'));
181INSERT INTO people_tab VALUES (people_typ('jill', 666, '06-Jan-1976'));
182
183CREATE TYPE student UNDER people_typ
184(
185 stud_id NUMBER,
186 teammate REF people_typ
187) NOT FINAL;
188/
189
190CREATE TABLE student_tab OF student;
191INSERT INTO student_tab VALUES ('jimmy',222,'02-Feb-1976',200,
192(SELECT REF(a) FROM people_tab a where name='john'));
193
194CREATE TYPE parttime_stud UNDER student
195(
196 course_id NUMBER,
197 partner REF student
198)NOT FINAL;
199/
200CREATE TABLE parttime_stud_tab OF parttime_stud;
201
202INSERT INTO parttime_stud_tab VALUES ('james',333,'03-Feb-1976',300,
203(SELECT REF(a) FROM people_tab a where name='john'),3000,
204(SELECT REF(a) FROM student_tab a));
205
206
207CREATE TYPE foreign_student UNDER parttime_stud
208(
209 country VARCHAR2(30),
210 leader REF parttime_stud
211);
212/
213CREATE TABLE foreign_student_tab OF foreign_student;
214
215COMMIT;
216
217
218/* OCCI AQ Objects */
219
220
221connect system/manager
222
223grant aq_administrator_role, aq_user_role to hr;
224grant execute on dbms_aq to hr;
225grant execute on dbms_aqadm to hr;
226
227BEGIN
228 dbms_aqadm.grant_system_privilege('ENQUEUE_ANY','hr',FALSE);
229 dbms_aqadm.grant_system_privilege('DEQUEUE_ANY','hr',FALSE);
230END;
231/
232
233connect hr/hr
234
235CREATE OR REPLACE TYPE hr_obj AS OBJECT
236(a1 NUMBER, a2 VARCHAR2(25));
237/
238
239BEGIN
240 dbms_aqadm.create_queue_table (
241 queue_table => 'hr.table01',
242 queue_payload_type => 'RAW',
243 comment => 'single-consumer',
244 multiple_consumers => false,
245 compatible => '8.1.0'
246);
247END;
248/
249
250BEGIN
251 dbms_aqadm.create_queue (
252 queue_name => 'queue01',
253 queue_table=> 'hr.table01'
254);
255END;
256/
257BEGIN
258 dbms_aqadm.start_queue(queue_name => 'queue01');
259END;
260/
261
262BEGIN
263 dbms_aqadm.create_queue_table (
264 queue_table => 'hr.table02',
265 queue_payload_type => 'SYS.ANYDATA',
266 comment => 'multi-consumer',
267 multiple_consumers => true,
268 compatible => '8.1.0'
269);
270END;
271/
272
273BEGIN
274 dbms_aqadm.create_queue (
275 queue_name => 'queue02',
276 queue_table=> 'hr.table02'
277);
278END;
279/
280BEGIN
281 dbms_aqadm.start_queue(queue_name => 'queue02');
282END;
283/
284
285BEGIN
286 dbms_aqadm.create_queue_table (
287 queue_table => 'hr.table03',
288 queue_payload_type => 'hr_obj',
289 comment => 'multi-consumer',
290 multiple_consumers => true,
291 compatible => '8.1.0'
292);
293END;
294/
295
296BEGIN
297 dbms_aqadm.create_queue (
298 queue_name => 'queue03',
299 queue_table=> 'hr.table03'
300);
301END;
302/
303BEGIN
304 dbms_aqadm.start_queue(queue_name => 'queue03');
305END;
306/
307
308BEGIN
309 dbms_aqadm.create_queue_table (
310 queue_table => 'hr.table04',
311 queue_payload_type => 'RAW',
312 comment => 'multiple-consumer',
313 multiple_consumers => true,
314 compatible => '8.1.0'
315);
316END;
317/
318
319BEGIN
320 dbms_aqadm.create_queue (
321 queue_name => 'queue04',
322 queue_table=> 'hr.table04'
323);
324END;
325/
326BEGIN
327 dbms_aqadm.start_queue(queue_name => 'queue04');
328END;
329/
330
331Rem Add default local subscribers to the queues
332
333BEGIN
334 dbms_aqadm.add_subscriber( queue_name=> 'queue03',
335 subscriber=> sys.aq$_agent('AGT1','hr.queue03', 0));
336END;
337/
338
339BEGIN
340 dbms_aqadm.add_subscriber( queue_name=> 'queue04',
341 subscriber=> sys.aq$_agent('AGT1','hr.queue04', 0));
342END;
343/
344