1 --####################################################################
\r
2 -- Script to create Oracle version of the Northwind test DB
\r
4 -- this script was tested on Oracle XE - so it does not contain any 'CREATE DATABASE' statements.
\r
5 --####################################################################
\r
6 CREATE TABLE "Region" (
\r
7 "RegionID" INTEGER NOT NULL,
\r
8 "RegionDescription" VARCHAR(50) NOT NULL,
\r
9 PRIMARY KEY("RegionID")
\r
12 CREATE TABLE "Territories" (
\r
13 "TerritoryID" VARCHAR(20) NOT NULL,
\r
14 "TerritoryDescription" VARCHAR(50) NOT NULL,
\r
15 "RegionID" INTEGER NOT NULL,
\r
16 PRIMARY KEY("TerritoryID"),
\r
17 FOREIGN KEY ("RegionID") REFERENCES "Region" ("RegionID")
\r
20 --####################################################################
\r
21 CREATE TABLE "Categories" (
\r
22 "CategoryID" INTEGER NOT NULL,
\r
23 "CategoryName" VARCHAR(15) NOT NULL,
\r
24 "Description" VARCHAR(500) NULL,
\r
25 "Picture" BLOB NULL,
\r
26 PRIMARY KEY("CategoryID")
\r
29 CREATE TABLE "Suppliers" (
\r
30 "SupplierID" INTEGER NOT NULL,
\r
31 "CompanyName" VARCHAR(40) NOT NULL,
\r
32 "ContactName" VARCHAR(30) NULL,
\r
33 "ContactTitle" VARCHAR(30) NULL,
\r
34 "Address" VARCHAR(60) NULL,
\r
35 "City" VARCHAR(15) NULL,
\r
36 "Region" VARCHAR(15) NULL,
\r
37 "PostalCode" VARCHAR(10) NULL,
\r
38 "Country" VARCHAR(15) NULL,
\r
39 "Phone" VARCHAR(24) NULL,
\r
40 "Fax" VARCHAR(24) NULL,
\r
41 PRIMARY KEY("SupplierID")
\r
43 --####################################################################
\r
45 CREATE TABLE "Products" (
\r
46 "ProductID" INTEGER NOT NULL,
\r
47 "ProductName" VARCHAR(40) NOT NULL,
\r
48 "SupplierID" INTEGER NULL,
\r
49 "CategoryID" INTEGER NULL,
\r
50 "QuantityPerUnit" VARCHAR(20) NULL,
\r
51 "UnitPrice" DECIMAL NULL,
\r
52 "UnitsInStock" SMALLINT NULL,
\r
53 "UnitsOnOrder" SMALLINT NULL,
\r
54 "ReorderLevel" SMALLINT NULL,
\r
55 "Discontinued" NUMBER(1) NOT NULL, --'bool' field
\r
56 PRIMARY KEY("ProductID"),
\r
57 FOREIGN KEY ("CategoryID") REFERENCES "Categories" ("CategoryID"),
\r
58 FOREIGN KEY ("SupplierID") REFERENCES "Suppliers" ("SupplierID")
\r
61 CREATE TABLE "Customers" (
\r
62 "CustomerID" VARCHAR(5) NOT NULL,
\r
63 "CompanyName" VARCHAR(40) NOT NULL,
\r
64 "ContactName" VARCHAR(30) NULL,
\r
65 "ContactTitle" VARCHAR(30) NULL,
\r
66 "Address" VARCHAR(60) NULL,
\r
67 "City" VARCHAR(15) NULL,
\r
68 "Region" VARCHAR(15) NULL,
\r
69 "PostalCode" VARCHAR(10) NULL,
\r
70 "Country" VARCHAR(15) NULL,
\r
71 "Phone" VARCHAR(24) NULL,
\r
72 "Fax" VARCHAR(24) NULL,
\r
73 PRIMARY KEY("CustomerID")
\r
76 --####################################################################
\r
77 CREATE TABLE "Employees" (
\r
78 "EmployeeID" INTEGER NOT NULL,
\r
79 "LastName" VARCHAR(20) NOT NULL,
\r
80 "FirstName" VARCHAR(10) NOT NULL,
\r
81 "Title" VARCHAR(30) NULL,
\r
82 "BirthDate" DATE NULL,
\r
83 "HireDate" DATE NULL,
\r
84 "Address" VARCHAR(60) NULL,
\r
85 "City" VARCHAR(15) NULL,
\r
86 "Region" VARCHAR(15) NULL,
\r
87 "PostalCode" VARCHAR(10) NULL,
\r
88 "Country" VARCHAR(15) NULL,
\r
89 "HomePhone" VARCHAR(24) NULL,
\r
91 "Notes" VARCHAR(100) NULL,
\r
92 "TitleOfCourtesy" VARCHAR(25) NULL,
\r
93 "PhotoPath" VARCHAR (255) NULL,
\r
94 "Extension" VARCHAR(5) NULL,
\r
95 "ReportsTo" INTEGER NULL,
\r
96 PRIMARY KEY("EmployeeID"),
\r
97 FOREIGN KEY ("ReportsTo") REFERENCES "Employees" ("EmployeeID")
\r
100 CREATE TABLE "EmployeeTerritories" (
\r
101 "EmployeeID" INTEGER NOT NULL,
\r
102 "TerritoryID" VARCHAR(20) NOT NULL,
\r
103 PRIMARY KEY("EmployeeID","TerritoryID"),
\r
104 FOREIGN KEY ("EmployeeID") REFERENCES "Employees" ("EmployeeID"),
\r
105 FOREIGN KEY ("TerritoryID") REFERENCES "Territories" ("TerritoryID")
\r
108 --####################################################################
\r
109 CREATE TABLE "Orders" (
\r
110 "OrderID" INTEGER NOT NULL,
\r
111 "CustomerID" VARCHAR(5) NULL,
\r
112 "EmployeeID" INTEGER NULL,
\r
113 "OrderDate" DATE NULL,
\r
114 "RequiredDate" DATE NULL,
\r
115 "ShippedDate" DATE NULL,
\r
116 "ShipVia" INT NULL,
\r
117 "Freight" DECIMAL NULL,
\r
118 "ShipName" VARCHAR(40) NULL,
\r
119 "ShipAddress" VARCHAR(60) NULL,
\r
120 "ShipCity" VARCHAR(15) NULL,
\r
121 "ShipRegion" VARCHAR(15) NULL,
\r
122 "ShipPostalCode" VARCHAR(10) NULL,
\r
123 "ShipCountry" VARCHAR(15) NULL,
\r
124 PRIMARY KEY("OrderID"),
\r
125 FOREIGN KEY ("CustomerID") REFERENCES "Customers" ("CustomerID"),
\r
126 FOREIGN KEY ("EmployeeID") REFERENCES "Employees" ("EmployeeID")
\r
129 --####################################################################
\r
130 CREATE TABLE "OrderDetails" (
\r
131 "OrderID" INTEGER NOT NULL,
\r
132 "ProductID" INTEGER NOT NULL,
\r
133 "UnitPrice" DECIMAL NOT NULL,
\r
134 "Quantity" SMALLINT NOT NULL,
\r
135 "Discount" FLOAT NOT NULL,
\r
136 PRIMARY KEY("OrderID","ProductID"),
\r
137 FOREIGN KEY ("OrderID") REFERENCES "Orders" ("OrderID"),
\r
138 FOREIGN KEY ("ProductID") REFERENCES "Products" ("ProductID")
\r
141 --####################################################################
\r
142 CREATE SEQUENCE Region_seq START WITH 1 INCREMENT BY 1;
\r
143 CREATE SEQUENCE Categories_seq START WITH 1 INCREMENT BY 1;
\r
144 CREATE SEQUENCE Suppliers_seq START WITH 1 INCREMENT BY 1;
\r
145 CREATE SEQUENCE Products_seq START WITH 1 INCREMENT BY 1;
\r
146 CREATE SEQUENCE Orders_seq START WITH 1 INCREMENT BY 1;
\r
147 CREATE SEQUENCE Employees_seq START WITH 1 INCREMENT BY 1;
\r
148 CREATE SEQUENCE Territories_seq START WITH 1 INCREMENT BY 1;
\r
150 --####################################################################
\r
152 CREATE OR REPLACE TRIGGER Employees_Trigger
\r
153 BEFORE INSERT ON "Employees"
\r
156 IF (:new."EmployeeID" IS NULL) THEN
\r
157 SELECT Employees_seq.NEXTVAL INTO :new."EmployeeID" FROM DUAL;
\r
162 CREATE OR REPLACE TRIGGER Products_Trigger
\r
163 BEFORE INSERT ON "Products"
\r
166 IF (:new."ProductID" IS NULL) THEN
\r
167 SELECT Products_seq.NEXTVAL INTO :new."ProductID" FROM DUAL;
\r
172 CREATE OR REPLACE TRIGGER Categories_Trigger
\r
173 BEFORE INSERT ON "Categories"
\r
176 IF (:new."CategoryID" IS NULL) THEN
\r
177 SELECT Categories_seq.NEXTVAL INTO :new."CategoryID" FROM DUAL;
\r
182 CREATE OR REPLACE TRIGGER Region_Trigger
\r
183 BEFORE INSERT ON "Region"
\r
186 IF (:new."RegionID" IS NULL) THEN
\r
187 SELECT Region_seq.NEXTVAL INTO :new."RegionID" FROM DUAL;
\r
192 CREATE OR REPLACE TRIGGER Suppliers_Trigger
\r
193 BEFORE INSERT ON "Suppliers"
\r
196 IF (:new."SupplierID" IS NULL) THEN
\r
197 SELECT Suppliers_seq.NEXTVAL INTO :new."SupplierID" FROM DUAL;
\r
202 CREATE OR REPLACE TRIGGER Orders_Trigger
\r
203 BEFORE INSERT ON "Orders"
\r
206 IF (:new."OrderID" IS NULL) THEN
\r
207 SELECT Orders_seq.NEXTVAL INTO :new."OrderID" FROM DUAL;
\r
212 CREATE OR REPLACE TRIGGER Territories_Trigger
\r
213 BEFORE INSERT ON "Territories"
\r
216 IF (:new."TerritoryID" IS NULL) THEN
\r
217 SELECT Territories_seq.NEXTVAL INTO :new."TerritoryID" FROM DUAL;
\r
222 --####################################################################
\r
223 Insert INTO "Categories" ("CategoryID", "CategoryName","Description")
\r
224 values (Categories_seq.NextVal, 'Beverages', 'Soft drinks, coffees, teas, beers, and ales');
\r
225 Insert INTO "Categories" ("CategoryID", "CategoryName","Description")
\r
226 values (Categories_seq.NextVal, 'Condiments','Sweet and savory sauces, relishes, spreads, and seasonings');
\r
227 Insert INTO "Categories" ("CategoryID", "CategoryName","Description")
\r
228 values (Categories_seq.NextVal, 'Seafood','Seaweed and fish');
\r
230 --####################################################################
\r
231 INSERT INTO "Region" ("RegionDescription") VALUES ('North America');
\r
232 INSERT INTO "Region" ("RegionDescription") VALUES ('Europe');
\r
234 --####################################################################
\r
235 INSERT INTO "Territories" ("TerritoryID", "TerritoryDescription", "RegionID") VALUES ('US.Northwest', 'Northwest', 1);
\r
237 --####################################################################
\r
238 insert INTO "Customers" ("CustomerID", "CompanyName","ContactName","Country","PostalCode","City")
\r
239 values ('AIRBU', 'airbus','jacques','France','10000','Paris');
\r
240 insert INTO "Customers" ("CustomerID", "CompanyName","ContactName","Country","PostalCode","City")
\r
241 values ('BT___','BT','graeme','U.K.','E14','London');
\r
243 insert INTO "Customers" ("CustomerID", "CompanyName","ContactName","Country","PostalCode","City")
\r
244 values ('ATT__','ATT','bob','USA','10021','New York');
\r
245 insert INTO "Customers" ("CustomerID", "CompanyName","ContactName","Country","PostalCode","City")
\r
246 values ('UKMOD', 'MOD','(secret)','U.K.','E14','London');
\r
248 insert INTO "Customers" ("CustomerID", "CompanyName","ContactName", "ContactTitle", "Country","PostalCode","City", "Phone")
\r
249 values ('ALFKI', 'Alfreds Futterkiste','Maria Anders','Sales Representative','Germany','12209','Berlin','030-0074321');
\r
251 insert INTO "Customers" ("CustomerID", "CompanyName","ContactName", "ContactTitle", "Country", "PostalCode", "Address", "City", "Phone", "Fax")
\r
252 values ('BONAP', 'Bon app''','Laurence Lebihan','Owner','France','13008','12, rue des Bouchers','Marseille','91.24.45.40', '91.24.45.41');
\r
254 insert INTO "Customers" ("CustomerID", "CompanyName","ContactName", "ContactTitle", "Country","PostalCode","City", "Phone")
\r
255 values ('WARTH', 'Wartian Herkku','Pirkko Koskitalo','Accounting Manager','Finland','90110','Oulu','981-443655');
\r
257 --####################################################################
\r
258 insert INTO "Suppliers" ("SupplierID", "CompanyName", "ContactName", "ContactTitle", "Address", "City", "Region", "Country")
\r
259 VALUES (Suppliers_seq.Nextval, 'alles AG', 'Harald Reitmeyer', 'Prof', 'Fischergasse 8', 'Heidelberg', 'B-W', 'Germany');
\r
261 insert INTO "Suppliers" ("SupplierID", "CompanyName", "ContactName", "ContactTitle", "Address", "City", "Region", "Country")
\r
262 VALUES (Suppliers_seq.Nextval, 'Microsoft', 'Mr Allen', 'Monopolist', '1 MS', 'Redmond', 'WA', 'USA');
\r
264 INSERT INTO "Suppliers" ("SupplierID", "CompanyName", "ContactName", "ContactTitle", "Address", "City", "Region", "PostalCode", "Country", "Phone", "Fax")
\r
265 VALUES (Suppliers_seq.Nextval, 'Pavlova, Ltd.', 'Ian Devling', 'Marketing Manager', '74 Rose St. Moonie Ponds', 'Melbourne', 'Victoria', '3058', 'Australia', '(03) 444-2343', '(03) 444-6588');
\r
268 insert INTO "Products" ("ProductID", "ProductName","SupplierID", "QuantityPerUnit","UnitsInStock","UnitsOnOrder","Discontinued")
\r
269 VALUES (Products_seq.nextval, 'Pen',1, 10, 12, 2, 0);
\r
270 insert INTO "Products" ("ProductID", "ProductName","SupplierID", "QuantityPerUnit","UnitsInStock","UnitsOnOrder","Discontinued")
\r
271 VALUES (Products_seq.nextval, 'Bicycle',1, 1, 6, 0, 0);
\r
272 insert INTO "Products" ("ProductID", "ProductName","QuantityPerUnit","UnitsInStock","UnitsOnOrder","Discontinued")
\r
273 VALUES (Products_seq.nextval, 'Phone',3, 7, 0, 0);
\r
274 insert INTO "Products" ("ProductID", "ProductName","QuantityPerUnit","UnitsInStock","UnitsOnOrder","Discontinued")
\r
275 VALUES (Products_seq.nextval, 'SAM',1, 51, 11, 0);
\r
276 insert INTO "Products" ("ProductID", "ProductName","QuantityPerUnit","UnitsInStock","UnitsOnOrder","Discontinued")
\r
277 VALUES (Products_seq.nextval, 'iPod',0, 11, 0, 0);
\r
278 insert INTO "Products" ("ProductID", "ProductName","QuantityPerUnit","UnitsInStock","UnitsOnOrder","Discontinued")
\r
279 VALUES (Products_seq.nextval, 'Toilet Paper',2, 0, 3, 1);
\r
280 insert INTO "Products" ("ProductID", "ProductName","QuantityPerUnit","UnitsInStock","UnitsOnOrder","Discontinued")
\r
281 VALUES (Products_seq.nextval, 'Fork',5, 111, 0, 0);
\r
282 insert INTO "Products" ("ProductID", "ProductName","SupplierID", "QuantityPerUnit","UnitsInStock","UnitsOnOrder","Discontinued")
\r
283 VALUES (Products_seq.nextval, 'Linq Book',2, 1, 0, 26, 0);
\r
284 INSERT INTO "Products" ("ProductID", "ProductName","SupplierID", "QuantityPerUnit","UnitPrice", "UnitsInStock","UnitsOnOrder","Discontinued")
\r
285 VALUES (Products_seq.nextval, 'Carnarvon Tigers', 3,'16 kg pkg.',62.50, 42, 0, 0);
\r
287 --####################################################################
\r
288 insert INTO "Employees" ("EmployeeID", "LastName","FirstName","Title","BirthDate","HireDate","Address","City","ReportsTo","Country","HomePhone")
\r
289 VALUES (Employees_seq.nextval, 'Fuller','Andrew','Vice President, Sales',to_date('01-01-1964','dd-mm-yyyy'),to_date('01-01-1989','dd-mm-yyyy'), '908 W. Capital Way','Tacoma',NULL,'USA','(111)222333');
\r
291 insert INTO "Employees" ("EmployeeID", "LastName","FirstName","Title","BirthDate","HireDate","Address","City","ReportsTo","Country","HomePhone")
\r
292 VALUES (Employees_seq.nextval, 'Davolio','Nancy','Sales Representative',to_date('01-01-1964','dd-mm-yyyy'),to_date('01-01-1994','dd-mm-yyyy'),'507 - 20th Ave. E. Apt. 2A','Seattle',1,'USA','(444)555666');
\r
294 insert INTO "Employees" ("EmployeeID", "LastName","FirstName","Title","BirthDate","HireDate","Address","City","ReportsTo","Country","HomePhone")
\r
295 VALUES (Employees_seq.nextval, 'Builder','Bob','Handyman',to_date('01-01-1964','dd-mm-yyyy'),to_date('01-01-1964','dd-mm-yyyy'),'666 dark street','Seattle',2,'USA','(777)888999');
\r
297 --####################################################################
\r
298 INSERT INTO "EmployeeTerritories" ("EmployeeID", "TerritoryID") VALUES (2, 'US.Northwest');
\r
301 --####################################################################
\r
302 --truncate table Orders;
\r
304 insert INTO "Orders" ("OrderID", "CustomerID", "EmployeeID", "OrderDate", "Freight")
\r
305 Values (Orders_seq.NextVal, 'AIRBU', 1, sysdate, 21.3);
\r
307 insert INTO "Orders" ("OrderID", "CustomerID", "EmployeeID", "OrderDate", "Freight")
\r
308 Values (Orders_seq.NextVal, 'BT___', 1, sysdate, 11.1);
\r
310 insert INTO "Orders" ("OrderID", "CustomerID", "EmployeeID", "OrderDate", "Freight")
\r
311 Values (Orders_seq.NextVal, 'BT___', 1, sysdate, 11.5);
\r
313 insert INTO "Orders" ("OrderID", "CustomerID", "EmployeeID", "OrderDate", "Freight")
\r
314 Values (Orders_seq.NextVal, 'UKMOD', 1, sysdate, 32.5);
\r
316 insert INTO "Orders" ("OrderID", "CustomerID", "EmployeeID", "OrderDate", "RequiredDate", "ShippedDate", "Freight", "ShipName", "ShipAddress", "ShipCity", "ShipCountry")
\r
317 Values (Orders_seq.NextVal, 'BONAP', 1, to_date('1996-10-16', 'yyyy-mm-dd'), to_date('1996-11-27', 'yyyy-mm-dd'), to_date('1996-10-21', 'yyyy-mm-dd'), 10.21, 'Bon app''', '12, rue des Bouchers', 'Marseille', 'France' );
\r
319 INSERT INTO "OrderDetails" ("OrderID", "ProductID", "UnitPrice", "Quantity", "Discount")
\r
320 VALUES (1,2, 33, 5, 11);
\r
322 INSERT INTO "OrderDetails" ("OrderID", "ProductID", "UnitPrice", "Quantity", "Discount")
\r
323 VALUES (5,9, 50, 20, 0.05); --## CanarvonTigers for customer BONAP
\r
326 --####################################################################
\r
328 CREATE OR REPLACE FUNCTION NORTHWIND.HELLO0
\r
336 CREATE OR REPLACE FUNCTION NORTHWIND.HELLO1
\r
341 return 'Hello, ' || s || '!';
\r
345 CREATE OR REPLACE FUNCTION NORTHWIND.HELLO2
\r
346 (s varchar, s2 number)
\r
350 return 'Hello, ' || s || '!';
\r
354 CREATE OR REPLACE FUNCTION NORTHWIND.GETORDERCOUNT
\r
360 SELECT COUNT(*) INTO count1 FROM "Orders" WHERE "CustomerID"=custId;
\r
365 CREATE OR REPLACE PROCEDURE NORTHWIND.SP_SELORDERS
\r
366 (s varchar, s2 out number)
\r
369 select 22 into s2 from dual;
\r