Mercurial > pub > bltoolkit
comparison Data/Create Scripts/Oracle.sql @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:f990fcb411a9 |
---|---|
1 -- Person Table | |
2 | |
3 DROP SEQUENCE PersonSeq | |
4 / | |
5 DROP TABLE Doctor | |
6 / | |
7 DROP TABLE Patient | |
8 / | |
9 DROP TABLE Person | |
10 / | |
11 DROP SEQUENCE BinaryDataSeq | |
12 / | |
13 DROP TABLE BinaryData | |
14 / | |
15 DROP SEQUENCE DataTypeTestSeq | |
16 / | |
17 DROP TABLE DataTypeTest | |
18 / | |
19 DROP TABLE GrandChild | |
20 / | |
21 DROP TABLE Child | |
22 / | |
23 DROP TABLE Parent | |
24 / | |
25 DROP TABLE LinqDataTypes | |
26 / | |
27 DROP SEQUENCE SequenceTestSeq | |
28 / | |
29 DROP TABLE SequenceTest | |
30 / | |
31 DROP TABLE "STG_TRADE_INFORMATION" | |
32 / | |
33 DROP table t_test_user_contract | |
34 / | |
35 DROP table t_test_user | |
36 / | |
37 DROP sequence sq_test_user | |
38 / | |
39 DROP sequence sq_test_user_contract | |
40 / | |
41 | |
42 | |
43 CREATE SEQUENCE PersonSeq | |
44 / | |
45 | |
46 CREATE TABLE Person | |
47 ( PersonID NUMBER NOT NULL PRIMARY KEY | |
48 , Firstname VARCHAR2(50) NOT NULL | |
49 , Lastname VARCHAR2(50) NOT NULL | |
50 , Middlename VARCHAR2(50) | |
51 , Gender CHAR(1) NOT NULL | |
52 | |
53 , CONSTRAINT Ck_Person_Gender CHECK (Gender IN ('M', 'F', 'U', 'O')) | |
54 ) | |
55 / | |
56 | |
57 -- Insert Trigger for Person | |
58 | |
59 CREATE OR REPLACE TRIGGER Person_Add | |
60 BEFORE INSERT | |
61 ON Person | |
62 FOR EACH ROW | |
63 BEGIN | |
64 SELECT | |
65 PersonSeq.NEXTVAL | |
66 INTO | |
67 :NEW.PersonID | |
68 FROM | |
69 dual; | |
70 END; | |
71 / | |
72 | |
73 -- Doctor Table Extension | |
74 | |
75 CREATE TABLE Doctor | |
76 ( PersonID NUMBER NOT NULL PRIMARY KEY | |
77 , Taxonomy NVARCHAR2(50) NOT NULL | |
78 | |
79 , CONSTRAINT Fk_Doctor_Person FOREIGN KEY (PersonID) | |
80 REFERENCES Person (PersonID) ON DELETE CASCADE | |
81 ) | |
82 / | |
83 | |
84 -- Patient Table Extension | |
85 | |
86 CREATE TABLE Patient | |
87 ( PersonID NUMBER NOT NULL PRIMARY KEY | |
88 , Diagnosis NVARCHAR2(256) NOT NULL | |
89 | |
90 , CONSTRAINT Fk_Patient_Person FOREIGN KEY (PersonID) | |
91 REFERENCES Person (PersonID) ON DELETE CASCADE | |
92 ) | |
93 / | |
94 | |
95 -- Sample data for Person/Doctor/Patient | |
96 | |
97 INSERT INTO Person (FirstName, LastName, Gender) VALUES ('John', 'Pupkin', 'M') | |
98 / | |
99 INSERT INTO Person (FirstName, LastName, Gender) VALUES ('Tester', 'Testerson', 'M') | |
100 / | |
101 INSERT INTO Doctor (PersonID, Taxonomy) VALUES (PersonSeq.CURRVAL, 'Psychiatry') | |
102 / | |
103 INSERT INTO Patient (PersonID, Diagnosis) VALUES (PersonSeq.CURRVAL, 'Hallucination with Paranoid Bugs'' Delirium of Persecution') | |
104 / | |
105 | |
106 -- Person_Delete | |
107 | |
108 CREATE OR REPLACE | |
109 PROCEDURE Person_Delete(pPersonID IN NUMBER) IS | |
110 BEGIN | |
111 DELETE FROM | |
112 Person | |
113 WHERE | |
114 PersonID = pPersonID; | |
115 END; | |
116 / | |
117 | |
118 -- Person_Insert | |
119 | |
120 CREATE OR REPLACE | |
121 PROCEDURE Person_Insert_OutputParameter | |
122 ( pFirstName IN NVARCHAR2 | |
123 , pLastName IN NVARCHAR2 | |
124 , pMiddleName IN NVARCHAR2 | |
125 , pGender IN CHAR | |
126 , pPersonID OUT NUMBER | |
127 ) IS | |
128 BEGIN | |
129 INSERT INTO Person | |
130 ( LastName, FirstName, MiddleName, Gender) | |
131 VALUES | |
132 (pLastName, pFirstName, pMiddleName, pGender) | |
133 RETURNING | |
134 PersonID | |
135 INTO | |
136 pPersonID; | |
137 END; | |
138 / | |
139 | |
140 CREATE OR REPLACE | |
141 FUNCTION Person_Insert | |
142 ( pFirstName IN NVARCHAR2 | |
143 , pLastName IN NVARCHAR2 | |
144 , pMiddleName IN NVARCHAR2 | |
145 , pGender IN CHAR | |
146 ) | |
147 RETURN SYS_REFCURSOR IS | |
148 retCursor SYS_REFCURSOR; | |
149 lPersonID NUMBER; | |
150 BEGIN | |
151 INSERT INTO Person | |
152 ( LastName, FirstName, MiddleName, Gender) | |
153 VALUES | |
154 (pLastName, pFirstName, pMiddleName, pGender) | |
155 RETURNING | |
156 PersonID | |
157 INTO | |
158 lPersonID; | |
159 | |
160 OPEN retCursor FOR | |
161 SELECT | |
162 PersonID, Firstname, Lastname, Middlename, Gender | |
163 FROM | |
164 Person | |
165 WHERE | |
166 PersonID = lPersonID; | |
167 RETURN | |
168 retCursor; | |
169 END; | |
170 / | |
171 | |
172 -- Person_SelectAll | |
173 | |
174 CREATE OR REPLACE | |
175 FUNCTION Person_SelectAll | |
176 RETURN SYS_REFCURSOR IS | |
177 retCursor SYS_REFCURSOR; | |
178 BEGIN | |
179 OPEN retCursor FOR | |
180 SELECT | |
181 PersonID, Firstname, Lastname, Middlename, Gender | |
182 FROM | |
183 Person; | |
184 RETURN | |
185 retCursor; | |
186 END; | |
187 / | |
188 | |
189 -- Person_SelectAllByGender | |
190 | |
191 CREATE OR REPLACE | |
192 FUNCTION Person_SelectAllByGender(pGender IN CHAR) | |
193 RETURN SYS_REFCURSOR IS | |
194 retCursor SYS_REFCURSOR; | |
195 BEGIN | |
196 OPEN retCursor FOR | |
197 SELECT | |
198 PersonID, Firstname, Lastname, Middlename, Gender | |
199 FROM | |
200 Person | |
201 WHERE | |
202 Gender = pGender; | |
203 RETURN | |
204 retCursor; | |
205 END; | |
206 / | |
207 | |
208 -- Person_SelectByKey | |
209 | |
210 CREATE OR REPLACE | |
211 FUNCTION Person_SelectByKey(pID IN NUMBER) | |
212 RETURN SYS_REFCURSOR IS | |
213 retCursor SYS_REFCURSOR; | |
214 BEGIN | |
215 OPEN retCursor FOR | |
216 SELECT | |
217 PersonID, Firstname, Lastname, Middlename, Gender | |
218 FROM | |
219 Person | |
220 WHERE | |
221 PersonID = pID; | |
222 RETURN | |
223 retCursor; | |
224 END; | |
225 / | |
226 | |
227 -- Person_SelectByName | |
228 | |
229 CREATE OR REPLACE | |
230 FUNCTION Person_SelectByName | |
231 ( pFirstName IN NVARCHAR2 | |
232 , pLastName IN NVARCHAR2 | |
233 ) | |
234 RETURN SYS_REFCURSOR IS | |
235 retCursor SYS_REFCURSOR; | |
236 BEGIN | |
237 OPEN retCursor FOR | |
238 SELECT | |
239 PersonID, Firstname, Lastname, Middlename, Gender | |
240 FROM | |
241 Person | |
242 WHERE | |
243 FirstName = pFirstName AND LastName = pLastName; | |
244 RETURN | |
245 retCursor; | |
246 END; | |
247 / | |
248 | |
249 -- Person_SelectListByName | |
250 | |
251 CREATE OR REPLACE | |
252 FUNCTION Person_SelectListByName | |
253 ( pFirstName IN NVARCHAR2 | |
254 , pLastName IN NVARCHAR2 | |
255 ) | |
256 RETURN SYS_REFCURSOR IS | |
257 retCursor SYS_REFCURSOR; | |
258 BEGIN | |
259 OPEN retCursor FOR | |
260 SELECT | |
261 PersonID, Firstname, Lastname, Middlename, Gender | |
262 FROM | |
263 Person | |
264 WHERE | |
265 FirstName LIKE pFirstName AND LastName LIKE pLastName; | |
266 RETURN | |
267 retCursor; | |
268 END; | |
269 / | |
270 | |
271 CREATE OR REPLACE | |
272 PROCEDURE Person_Update | |
273 ( pPersonID IN NUMBER | |
274 , pFirstName IN NVARCHAR2 | |
275 , pLastName IN NVARCHAR2 | |
276 , pMiddleName IN NVARCHAR2 | |
277 , pGender IN CHAR | |
278 ) IS | |
279 BEGIN | |
280 UPDATE | |
281 Person | |
282 SET | |
283 LastName = pLastName, | |
284 FirstName = pFirstName, | |
285 MiddleName = pMiddleName, | |
286 Gender = pGender | |
287 WHERE | |
288 PersonID = pPersonID; | |
289 END; | |
290 / | |
291 | |
292 -- Patient_SelectAll | |
293 | |
294 CREATE OR REPLACE | |
295 FUNCTION Patient_SelectAll | |
296 RETURN SYS_REFCURSOR IS | |
297 retCursor SYS_REFCURSOR; | |
298 BEGIN | |
299 OPEN retCursor FOR | |
300 SELECT | |
301 Person.*, Patient.Diagnosis | |
302 FROM | |
303 Patient, Person | |
304 WHERE | |
305 Patient.PersonID = Person.PersonID; | |
306 RETURN | |
307 retCursor; | |
308 END; | |
309 / | |
310 | |
311 | |
312 -- Patient_SelectByName | |
313 | |
314 CREATE OR REPLACE | |
315 FUNCTION Patient_SelectByName | |
316 ( pFirstName IN NVARCHAR2 | |
317 , pLastName IN NVARCHAR2 | |
318 ) | |
319 RETURN SYS_REFCURSOR IS | |
320 retCursor SYS_REFCURSOR; | |
321 BEGIN | |
322 OPEN retCursor FOR | |
323 SELECT | |
324 Person.*, Patient.Diagnosis | |
325 FROM | |
326 Patient, Person | |
327 WHERE | |
328 Patient.PersonID = Person.PersonID | |
329 AND FirstName = pFirstName AND LastName = pLastName; | |
330 RETURN | |
331 retCursor; | |
332 END; | |
333 / | |
334 | |
335 -- BinaryData Table | |
336 | |
337 CREATE SEQUENCE BinaryDataSeq | |
338 / | |
339 | |
340 CREATE TABLE BinaryData | |
341 ( BinaryDataID NUMBER NOT NULL PRIMARY KEY | |
342 , Stamp TIMESTAMP DEFAULT SYSDATE NOT NULL | |
343 , Data BLOB NOT NULL | |
344 ) | |
345 / | |
346 | |
347 -- Insert Trigger for Binarydata | |
348 | |
349 CREATE OR REPLACE TRIGGER BinaryData_Add | |
350 BEFORE INSERT | |
351 ON BinaryData | |
352 FOR EACH ROW | |
353 BEGIN | |
354 SELECT | |
355 BinaryDataSeq.NEXTVAL | |
356 INTO | |
357 :NEW.BinaryDataID | |
358 FROM | |
359 dual; | |
360 END; | |
361 / | |
362 | |
363 -- OutRefTest | |
364 | |
365 CREATE OR REPLACE | |
366 PROCEDURE OutRefTest | |
367 ( pID IN NUMBER | |
368 , pOutputID OUT NUMBER | |
369 , pInputOutputID IN OUT NUMBER | |
370 , pStr IN NVARCHAR2 | |
371 , pOutputStr OUT NVARCHAR2 | |
372 , pInputOutputStr IN OUT NVARCHAR2 | |
373 ) IS | |
374 BEGIN | |
375 pOutputID := pID; | |
376 pInputOutputID := pID + pInputOutputID; | |
377 pOutputStr := pStr; | |
378 pInputOutputStr := pStr || pInputOutputStr; | |
379 END; | |
380 / | |
381 | |
382 CREATE OR REPLACE | |
383 PROCEDURE OutRefEnumTest | |
384 ( pStr IN NVARCHAR2 | |
385 , pOutputStr OUT NVARCHAR2 | |
386 , pInputOutputStr IN OUT NVARCHAR2 | |
387 ) IS | |
388 BEGIN | |
389 pOutputStr := pStr; | |
390 pInputOutputStr := pStr || pInputOutputStr; | |
391 END; | |
392 / | |
393 | |
394 -- ArrayTest | |
395 | |
396 CREATE OR REPLACE | |
397 PROCEDURE ArrayTest | |
398 ( pIntArray IN DBMS_UTILITY.NUMBER_ARRAY | |
399 , pOutputIntArray OUT DBMS_UTILITY.NUMBER_ARRAY | |
400 , pInputOutputIntArray IN OUT DBMS_UTILITY.NUMBER_ARRAY | |
401 , pStrArray IN DBMS_UTILITY.NAME_ARRAY | |
402 , pOutputStrArray OUT DBMS_UTILITY.NAME_ARRAY | |
403 , pInputOutputStrArray IN OUT DBMS_UTILITY.NAME_ARRAY | |
404 ) IS | |
405 BEGIN | |
406 pOutputIntArray := pIntArray; | |
407 | |
408 FOR i IN pIntArray.FIRST..pIntArray.LAST LOOP | |
409 pInputOutputIntArray(i) := pInputOutputIntArray(i) + pIntArray(i); | |
410 END LOOP; | |
411 | |
412 pOutputStrArray := pStrArray; | |
413 | |
414 FOR i IN pStrArray.FIRST..pStrArray.LAST LOOP | |
415 pInputOutputStrArray(i) := pInputOutputStrArray(i) || pStrArray(i); | |
416 END LOOP; | |
417 END; | |
418 / | |
419 | |
420 CREATE OR REPLACE | |
421 PROCEDURE ScalarArray | |
422 ( pOutputIntArray OUT DBMS_UTILITY.NUMBER_ARRAY | |
423 ) IS | |
424 BEGIN | |
425 FOR i IN 1..5 LOOP | |
426 pOutputIntArray(i) := i; | |
427 END LOOP; | |
428 END; | |
429 / | |
430 | |
431 -- ResultSetTest | |
432 | |
433 CREATE OR REPLACE | |
434 PROCEDURE RESULTSETTEST | |
435 ( mr OUT SYS_REFCURSOR | |
436 , sr OUT SYS_REFCURSOR | |
437 ) IS | |
438 BEGIN | |
439 OPEN mr FOR | |
440 SELECT 1 as MasterID FROM dual | |
441 UNION SELECT 2 as MasterID FROM dual; | |
442 OPEN sr FOR | |
443 SELECT 4 SlaveID, 1 as MasterID FROM dual | |
444 UNION SELECT 5 SlaveID, 2 as MasterID FROM dual | |
445 UNION SELECT 6 SlaveID, 2 as MasterID FROM dual | |
446 UNION SELECT 7 SlaveID, 1 as MasterID FROM dual; | |
447 END; | |
448 / | |
449 | |
450 -- ExecuteScalarTest | |
451 | |
452 CREATE OR REPLACE | |
453 FUNCTION Scalar_DataReader | |
454 RETURN SYS_REFCURSOR | |
455 IS | |
456 retCursor SYS_REFCURSOR; | |
457 BEGIN | |
458 OPEN retCursor FOR | |
459 SELECT | |
460 12345 intField, '54321' stringField | |
461 FROM | |
462 DUAL; | |
463 RETURN | |
464 retCursor; | |
465 END; | |
466 / | |
467 | |
468 CREATE OR REPLACE | |
469 PROCEDURE Scalar_OutputParameter | |
470 ( pOutputInt OUT BINARY_INTEGER | |
471 , pOutputString OUT NVARCHAR2 | |
472 ) IS | |
473 BEGIN | |
474 pOutputInt := 12345; | |
475 pOutputString := '54321'; | |
476 END; | |
477 / | |
478 | |
479 CREATE OR REPLACE | |
480 FUNCTION Scalar_ReturnParameter | |
481 RETURN BINARY_INTEGER IS | |
482 BEGIN | |
483 RETURN | |
484 12345; | |
485 END; | |
486 / | |
487 | |
488 -- Data Types test | |
489 | |
490 CREATE SEQUENCE DataTypeTestSeq | |
491 / | |
492 | |
493 CREATE TABLE DataTypeTest | |
494 ( | |
495 DataTypeID INTEGER NOT NULL PRIMARY KEY, | |
496 Binary_ RAW(50) NULL, | |
497 Boolean_ NUMBER(1,0) NULL, | |
498 Byte_ NUMBER(3,0) NULL, | |
499 Bytes_ BLOB NULL, | |
500 Char_ NCHAR NULL, | |
501 DateTime_ DATE NULL, | |
502 Decimal_ NUMBER(19,5) NULL, | |
503 Double_ DOUBLE PRECISION NULL, | |
504 Guid_ RAW(16) NULL, | |
505 Int16_ NUMBER(5,0) NULL, | |
506 Int32_ NUMBER(10,0) NULL, | |
507 Int64_ NUMBER(20,0) NULL, | |
508 Money_ NUMBER NULL, | |
509 SByte_ NUMBER(3,0) NULL, | |
510 Single_ FLOAT NULL, | |
511 Stream_ BLOB NULL, | |
512 String_ NVARCHAR2(50) NULL, | |
513 UInt16_ NUMBER(5,0) NULL, | |
514 UInt32_ NUMBER(10,0) NULL, | |
515 UInt64_ NUMBER(20,0) NULL, | |
516 Xml_ XMLTYPE NULL | |
517 ) | |
518 / | |
519 | |
520 -- Insert Trigger for DataTypeTest | |
521 | |
522 CREATE OR REPLACE TRIGGER DataTypeTest_Add | |
523 BEFORE INSERT | |
524 ON DataTypeTest | |
525 FOR EACH ROW | |
526 BEGIN | |
527 SELECT | |
528 DataTypeTestSeq.NEXTVAL | |
529 INTO | |
530 :NEW.DataTypeID | |
531 FROM | |
532 dual; | |
533 END; | |
534 / | |
535 | |
536 INSERT INTO DataTypeTest | |
537 (Binary_, Boolean_, Byte_, Bytes_, Char_, DateTime_, Decimal_, | |
538 Double_, Guid_, Int16_, Int32_, Int64_, Money_, SByte_, | |
539 Single_, Stream_, String_, UInt16_, UInt32_, UInt64_, Xml_) | |
540 VALUES | |
541 ( NULL, NULL, NULL, NULL, NULL, NULL, NULL, | |
542 NULL, NULL, NULL, NULL, NULL, NULL, NULL, | |
543 NULL, NULL, NULL, NULL, NULL, NULL, NULL) | |
544 / | |
545 | |
546 INSERT INTO DataTypeTest | |
547 (Binary_, Boolean_, Byte_, Bytes_, Char_, DateTime_, Decimal_, | |
548 Double_, Guid_, Int16_, Int32_, Int64_, Money_, SByte_, | |
549 Single_, Stream_, String_, UInt16_, UInt32_, UInt64_, | |
550 Xml_) | |
551 VALUES | |
552 (SYS_GUID(), 1, 255, SYS_GUID(), 'B', SYSDATE, 12345.67, | |
553 1234.567, SYS_GUID(), 32767, 32768, 1000000, 12.3456, 127, | |
554 1234.123, SYS_GUID(), 'string', 32767, 32768, 200000000, | |
555 XMLTYPE('<root><element strattr="strvalue" intattr="12345"/></root>')) | |
556 / | |
557 | |
558 | |
559 | |
560 CREATE TABLE Parent (ParentID int, Value1 int) | |
561 / | |
562 CREATE TABLE Child (ParentID int, ChildID int) | |
563 / | |
564 CREATE TABLE GrandChild (ParentID int, ChildID int, GrandChildID int) | |
565 / | |
566 | |
567 | |
568 CREATE TABLE LinqDataTypes | |
569 ( | |
570 ID int, | |
571 MoneyValue decimal(10,4), | |
572 DateTimeValue timestamp, | |
573 DateTimeValue2 timestamp, | |
574 BoolValue smallint, | |
575 GuidValue raw(16), | |
576 BinaryValue blob NULL, | |
577 SmallIntValue smallint, | |
578 IntValue int NULL, | |
579 BigIntValue number(20,0) NULL | |
580 ) | |
581 / | |
582 | |
583 CREATE SEQUENCE SequenceTestSeq | |
584 MINVALUE 1 | |
585 START WITH 1 | |
586 INCREMENT BY 1 | |
587 CACHE 10 | |
588 / | |
589 | |
590 CREATE TABLE SequenceTest | |
591 ( | |
592 ID int NOT NULL PRIMARY KEY, | |
593 Value VARCHAR2(50) NOT NULL | |
594 ) | |
595 / | |
596 | |
597 CREATE TABLE "STG_TRADE_INFORMATION" | |
598 ( | |
599 "STG_TRADE_ID" NUMBER NOT NULL ENABLE, | |
600 "STG_TRADE_VERSION" NUMBER NOT NULL ENABLE, | |
601 "INFORMATION_TYPE_ID" NUMBER NOT NULL ENABLE, | |
602 "INFORMATION_TYPE_NAME" VARCHAR2(50 BYTE), | |
603 "VALUE" VARCHAR2(4000 BYTE), | |
604 "VALUE_AS_INTEGER" NUMBER, | |
605 "VALUE_AS_DATE" DATE | |
606 ) | |
607 / | |
608 | |
609 | |
610 create table t_test_user | |
611 ( | |
612 user_id number primary key, | |
613 name varchar2(255) not null unique | |
614 ) | |
615 / | |
616 | |
617 create table t_test_user_contract | |
618 ( | |
619 user_contract_id number primary key, | |
620 user_id number not null references t_test_user on delete cascade, | |
621 contract_no number not null, | |
622 name varchar2(255) not null, | |
623 unique (user_id, contract_no) | |
624 ) | |
625 / | |
626 | |
627 create sequence sq_test_user | |
628 / | |
629 create sequence sq_test_user_contract | |
630 / | |
631 | |
632 | |
633 DROP SEQUENCE TestIdentitySeq | |
634 / | |
635 DROP TABLE TestIdentity | |
636 / | |
637 | |
638 CREATE TABLE TestIdentity ( | |
639 ID NUMBER NOT NULL PRIMARY KEY | |
640 ) | |
641 / | |
642 | |
643 CREATE SEQUENCE TestIdentitySeq | |
644 / | |
645 | |
646 CREATE OR REPLACE TRIGGER TestIdentity_Add | |
647 BEFORE INSERT | |
648 ON TestIdentity | |
649 FOR EACH ROW | |
650 BEGIN | |
651 SELECT | |
652 TestIdentitySeq.NEXTVAL | |
653 INTO | |
654 :NEW.ID | |
655 FROM | |
656 dual; | |
657 END; | |
658 / |