GHTDB.ORACLE.sql 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979
  1. DROP INDEX GHTDB.categoryname;
  2. DROP INDEX GHTDB.city;
  3. DROP INDEX GHTDB.companyname_1;
  4. DROP INDEX GHTDB.postalcode_2;
  5. DROP INDEX GHTDB.region;
  6. DROP INDEX GHTDB.lastname;
  7. DROP INDEX GHTDB.postalcode_1;
  8. DROP INDEX GHTDB.categoryid;
  9. DROP INDEX GHTDB.productname;
  10. DROP INDEX GHTDB.suppliersproducts;
  11. DROP INDEX GHTDB.companyname;
  12. DROP INDEX GHTDB.postalcode;
  13. DROP TABLE GHTDB.TYPES_SIMPLE;
  14. DROP TABLE GHTDB.TYPES_EXTENDED;
  15. DROP TABLE GHTDB.TYPES_SPECIFIC;
  16. DROP TABLE GHTDB.categories;
  17. DROP TABLE GHTDB.customercustomerdemo;
  18. DROP TABLE GHTDB.customerdemographics;
  19. DROP TABLE GHTDB.customers;
  20. DROP TABLE GHTDB.employees;
  21. DROP TABLE GHTDB.employeeterritories;
  22. DROP TABLE GHTDB.gh_emptytable;
  23. DROP TABLE GHTDB."Order Details";
  24. DROP TABLE GHTDB.orders;
  25. DROP TABLE GHTDB.products;
  26. DROP TABLE GHTDB.region;
  27. DROP TABLE GHTDB.Results;
  28. DROP TABLE GHTDB.shippers;
  29. DROP TABLE GHTDB.shoppingcart;
  30. DROP TABLE GHTDB.suppliers;
  31. DROP TABLE GHTDB.territories;
  32. DROP SEQUENCE GHTDB.s_463_1_reviews;
  33. DROP SEQUENCE GHTDB.s_464_1_shoppingcart;
  34. DROP SEQUENCE GHTDB.s_59_1_products;
  35. DROP SEQUENCE GHTDB.s_60_1_orders;
  36. DROP SEQUENCE GHTDB.s_62_1_suppliers;
  37. DROP SEQUENCE GHTDB.s_63_1_shippers;
  38. DROP SEQUENCE GHTDB.s_65_1_employees;
  39. DROP SEQUENCE GHTDB.s_68_1_categories;
  40. DROP USER GHTDB CASCADE;
  41. CREATE USER "GHTDB"
  42. IDENTIFIED BY "GHTDB" DEFAULT TABLESPACE "USERS"
  43. TEMPORARY TABLESPACE "TEMP" ;
  44. GRANT CONNECT, RESOURCE, CREATE TABLE TO "GHTDB";
  45. CREATE OR REPLACE PACKAGE "GHTDB"."GHTPKG" AS
  46. TYPE RCT1 IS REF CURSOR;
  47. IDENTITY INTEGER;
  48. procedure ghsp_pkgAmbig(res out rct1);
  49. procedure ghsp_inPkg(CustomerIdPrm IN CHAR, result OUT RCT1);
  50. END;
  51. /
  52. CREATE TABLE GHTDB.TYPES_SIMPLE (
  53. ID CHAR(10) NULL,
  54. T_NUMBER NUMBER(10) NULL,
  55. T_LONG LONG NULL,
  56. T_FLOAT FLOAT(10) NULL,
  57. T_VARCHAR VARCHAR2(10) NULL,
  58. T_NVARCHAR NVARCHAR2(10) NULL,
  59. T_CHAR CHAR(10) NULL,
  60. T_NCHAR NCHAR(10) NULL
  61. )
  62. TABLESPACE USERS
  63. /
  64. CREATE TABLE GHTDB.TYPES_EXTENDED (
  65. ID CHAR(10) NULL,
  66. T_RAW RAW(10) NULL,
  67. T_LONGRAW LONG RAW NULL,
  68. T_DATE DATE NULL,
  69. T_BLOB BLOB NULL,
  70. T_CLOB CLOB NULL,
  71. T_NCLOB NCLOB NULL
  72. )
  73. TABLESPACE USERS
  74. /
  75. CREATE TABLE GHTDB.TYPES_SPECIFIC (
  76. ID CHAR(10) NULL,
  77. T_ROWID ROWID NULL,
  78. T_UROWID UROWID NULL,
  79. T_BFILE BFILE NULL,
  80. T_XMLTYPE SYS.XMLTYPE NULL
  81. )
  82. TABLESPACE USERS
  83. /
  84. CREATE TABLE GHTDB.categories (
  85. categoryid NUMBER(10,0) NOT NULL,
  86. categoryname VARCHAR2(30) NOT NULL,
  87. description CLOB NULL
  88. )
  89. TABLESPACE USERS
  90. /
  91. CREATE INDEX GHTDB.categoryname
  92. ON GHTDB.categories (
  93. categoryname
  94. )
  95. TABLESPACE USERS
  96. /
  97. CREATE TABLE GHTDB.customercustomerdemo (
  98. customerid CHAR(10) NOT NULL,
  99. customertypeid CHAR(20) NOT NULL
  100. )
  101. TABLESPACE USERS
  102. /
  103. ALTER TABLE GHTDB.customercustomerdemo
  104. ADD CONSTRAINT pk_customercustomerdemo UNIQUE (
  105. customerid,
  106. customertypeid
  107. )
  108. /
  109. CREATE TABLE GHTDB.customerdemographics (
  110. customertypeid CHAR(20) NOT NULL,
  111. customerdesc CLOB NULL
  112. )
  113. TABLESPACE USERS
  114. /
  115. ALTER TABLE GHTDB.customerdemographics
  116. ADD CONSTRAINT pk_customerdemographics UNIQUE (
  117. customertypeid
  118. )
  119. /
  120. CREATE TABLE GHTDB.customers (
  121. customerid CHAR(10) NOT NULL,
  122. companyname VARCHAR2(80) NOT NULL,
  123. contactname VARCHAR2(60) NULL,
  124. contacttitle VARCHAR2(60) NULL,
  125. address VARCHAR2(120) NULL,
  126. city VARCHAR2(30) NULL,
  127. region VARCHAR2(30) NULL,
  128. postalcode VARCHAR2(20) NULL,
  129. country VARCHAR2(30) NULL,
  130. phone VARCHAR2(48) NULL,
  131. fax VARCHAR2(48) NULL
  132. )
  133. TABLESPACE USERS
  134. /
  135. CREATE INDEX GHTDB.city
  136. ON GHTDB.customers (
  137. city
  138. )
  139. /
  140. CREATE INDEX GHTDB.companyname_1
  141. ON GHTDB.customers (
  142. companyname
  143. )
  144. /
  145. CREATE INDEX GHTDB.postalcode_2
  146. ON GHTDB.customers (
  147. postalcode
  148. )
  149. /
  150. CREATE INDEX GHTDB.region
  151. ON GHTDB.customers (
  152. region
  153. )
  154. /
  155. ALTER TABLE GHTDB.customers
  156. ADD CONSTRAINT uk_customers_customerid UNIQUE (
  157. customerid
  158. )
  159. /
  160. CREATE TABLE GHTDB.employees (
  161. employeeid NUMBER(10,0) NOT NULL,
  162. lastname VARCHAR2(40) NOT NULL,
  163. firstname VARCHAR2(20) NOT NULL,
  164. title VARCHAR2(60) NULL,
  165. titleofcourtesy VARCHAR2(50) NULL,
  166. birthdate DATE NULL,
  167. hiredate DATE NULL,
  168. address VARCHAR2(120) NULL,
  169. city VARCHAR2(30) NULL,
  170. region VARCHAR2(30) NULL,
  171. postalcode VARCHAR2(20) NULL,
  172. country VARCHAR2(30) NULL,
  173. homephone VARCHAR2(48) NULL,
  174. extension VARCHAR2(8) NULL,
  175. notes CLOB NULL,
  176. reportsto NUMBER(10,0) NULL,
  177. photopath VARCHAR2(510) NULL,
  178. mycolumn NUMBER(10,0) NULL
  179. )
  180. TABLESPACE USERS
  181. /
  182. CREATE INDEX GHTDB.lastname
  183. ON GHTDB.employees (
  184. lastname
  185. )
  186. TABLESPACE USERS
  187. /
  188. CREATE INDEX GHTDB.postalcode_1
  189. ON GHTDB.employees (
  190. postalcode
  191. )
  192. TABLESPACE USERS
  193. /
  194. ALTER TABLE GHTDB.employees
  195. ADD CONSTRAINT pk_employees UNIQUE (
  196. employeeid
  197. )
  198. /
  199. CREATE TABLE GHTDB.employeeterritories (
  200. employeeid NUMBER(10,0) NOT NULL,
  201. territoryid VARCHAR2(40) NOT NULL
  202. )
  203. TABLESPACE USERS
  204. /
  205. CREATE TABLE GHTDB.gh_emptytable (
  206. col1 INTEGER NULL,
  207. col2 VARCHAR2(50) NULL
  208. )
  209. TABLESPACE USERS
  210. /
  211. CREATE TABLE GHTDB."Order Details" (
  212. orderid NUMBER(10,0) NOT NULL,
  213. productid NUMBER(10,0) NOT NULL,
  214. unitprice NUMBER(19,4) NOT NULL,
  215. quantity NUMBER(5,0) NOT NULL,
  216. discount FLOAT(126) NOT NULL
  217. )
  218. TABLESPACE USERS
  219. /
  220. CREATE TABLE GHTDB.orders (
  221. orderid NUMBER(10,0) NOT NULL,
  222. customerid NCHAR(5) NULL,
  223. employeeid NUMBER(10,0) NULL,
  224. orderdate DATE NULL,
  225. requireddate DATE NULL,
  226. shippeddate DATE NULL,
  227. shipvia NUMBER(10,0) NULL,
  228. freight NUMBER(19,4) NULL,
  229. shipname NVARCHAR2(40) NULL,
  230. shipaddress NVARCHAR2(60) NULL,
  231. shipcity NVARCHAR2(15) NULL,
  232. shipregion NVARCHAR2(15) NULL,
  233. shippostalcode NVARCHAR2(10) NULL,
  234. shipcountry NVARCHAR2(15) NULL
  235. )
  236. TABLESPACE USERS
  237. /
  238. ALTER TABLE GHTDB.orders
  239. ADD CONSTRAINT orders_uk11075049410018 UNIQUE (
  240. orderid
  241. )
  242. /
  243. ALTER TABLE GHTDB.orders
  244. ADD CONSTRAINT orders_fk21075049699981 FOREIGN KEY (
  245. orderid
  246. ) REFERENCES GHTDB.orders (
  247. orderid
  248. )
  249. /
  250. CREATE TABLE GHTDB.products (
  251. productid NUMBER(10,0) NOT NULL,
  252. productname VARCHAR2(80) NOT NULL,
  253. supplierid NUMBER(10,0) NULL,
  254. categoryid NUMBER(10,0) NULL,
  255. quantityperunit VARCHAR2(40) NULL,
  256. unitprice NUMBER(19,4) DEFAULT (0) NULL,
  257. unitsinstock NUMBER(5,0) DEFAULT (0) NULL,
  258. unitsonorder NUMBER(5,0) DEFAULT (0) NULL,
  259. reorderlevel NUMBER(5,0) DEFAULT (0) NULL,
  260. discontinued NUMBER(1,0) DEFAULT (0) NOT NULL
  261. )
  262. TABLESPACE USERS
  263. /
  264. ALTER TABLE GHTDB.products
  265. ADD CONSTRAINT ck_products_unitprice CHECK (
  266. UnitPrice >= 0
  267. )
  268. /
  269. ALTER TABLE GHTDB.products
  270. ADD CONSTRAINT ck_reorderlevel CHECK (
  271. ReorderLevel >= 0
  272. )
  273. /
  274. ALTER TABLE GHTDB.products
  275. ADD CONSTRAINT ck_unitsinstock CHECK (
  276. UnitsInStock >= 0
  277. )
  278. /
  279. ALTER TABLE GHTDB.products
  280. ADD CONSTRAINT ck_unitsonorder CHECK (
  281. UnitsOnOrder >= 0
  282. )
  283. /
  284. CREATE INDEX GHTDB.categoryid
  285. ON GHTDB.products (
  286. categoryid
  287. )
  288. /
  289. CREATE INDEX GHTDB.productname
  290. ON GHTDB.products (
  291. productname
  292. )
  293. /
  294. CREATE INDEX GHTDB.suppliersproducts
  295. ON GHTDB.products (
  296. supplierid
  297. )
  298. /
  299. CREATE TABLE GHTDB.region (
  300. regionid NUMBER(10,0) NOT NULL,
  301. regiondescription CHAR(100) NOT NULL
  302. )
  303. TABLESPACE USERS
  304. /
  305. CREATE TABLE GHTDB.Results (
  306. employeeid NUMBER(10,0) NOT NULL,
  307. lastname VARCHAR2(20) NOT NULL,
  308. firstname VARCHAR2(10) NOT NULL,
  309. title VARCHAR2(30) NULL,
  310. titleofcourtesy VARCHAR2(25) NULL,
  311. birthdate DATE NULL,
  312. hiredate DATE NULL,
  313. address VARCHAR2(60) NULL,
  314. city VARCHAR2(15) NULL,
  315. region VARCHAR2(15) NULL,
  316. postalcode VARCHAR2(10) NULL,
  317. country VARCHAR2(15) NULL,
  318. homephone VARCHAR2(24) NULL,
  319. extension VARCHAR2(4) NULL,
  320. notes CLOB NULL,
  321. reportsto NUMBER(10,0) NULL,
  322. photopath VARCHAR2(255) NULL,
  323. mycolumn NUMBER(10,0) NULL
  324. )
  325. TABLESPACE USERS
  326. /
  327. CREATE TABLE GHTDB.shippers (
  328. shipperid NUMBER(10,0) NOT NULL,
  329. companyname VARCHAR2(80) NOT NULL,
  330. phone VARCHAR2(48) NULL
  331. )
  332. TABLESPACE USERS
  333. /
  334. CREATE TABLE GHTDB.shoppingcart (
  335. recordid NUMBER(10,0) NOT NULL,
  336. cartid VARCHAR2(100) NULL,
  337. quantity NUMBER(10,0) DEFAULT (1) NOT NULL,
  338. productid NUMBER(10,0) NOT NULL,
  339. datecreated DATE DEFAULT (SYSDATE) NOT NULL
  340. )
  341. TABLESPACE USERS
  342. /
  343. CREATE TABLE GHTDB.suppliers (
  344. supplierid NUMBER(10,0) NOT NULL,
  345. companyname VARCHAR2(80) NOT NULL,
  346. contactname VARCHAR2(60) NULL,
  347. contacttitle VARCHAR2(60) NULL,
  348. address VARCHAR2(120) NULL,
  349. city VARCHAR2(30) NULL,
  350. region VARCHAR2(30) NULL,
  351. postalcode VARCHAR2(20) NULL,
  352. country VARCHAR2(30) NULL,
  353. phone VARCHAR2(48) NULL,
  354. fax VARCHAR2(48) NULL,
  355. homepage CLOB NULL
  356. )
  357. TABLESPACE USERS
  358. /
  359. CREATE INDEX GHTDB.companyname
  360. ON GHTDB.suppliers (
  361. companyname
  362. )
  363. TABLESPACE USERS
  364. /
  365. CREATE INDEX GHTDB.postalcode
  366. ON GHTDB.suppliers (
  367. postalcode
  368. )
  369. TABLESPACE USERS
  370. /
  371. CREATE TABLE GHTDB.territories (
  372. territoryid VARCHAR2(40) NOT NULL,
  373. territorydescription CHAR(100) NOT NULL,
  374. regionid NUMBER(10,0) NOT NULL
  375. )
  376. TABLESPACE USERS
  377. /
  378. CREATE SEQUENCE GHTDB.s_463_1_reviews
  379. MINVALUE 1
  380. MAXVALUE 999999999999999999999999999
  381. INCREMENT BY 1
  382. NOCYCLE
  383. NOORDER
  384. CACHE 20
  385. /
  386. CREATE SEQUENCE GHTDB.s_464_1_shoppingcart
  387. MINVALUE 1
  388. MAXVALUE 999999999999999999999999999
  389. INCREMENT BY 1
  390. NOCYCLE
  391. NOORDER
  392. CACHE 20
  393. /
  394. CREATE SEQUENCE GHTDB.s_59_1_products
  395. MINVALUE 1
  396. MAXVALUE 999999999999999999999999999
  397. INCREMENT BY 1
  398. NOCYCLE
  399. NOORDER
  400. CACHE 20
  401. /
  402. CREATE SEQUENCE GHTDB.s_60_1_orders
  403. MINVALUE 1
  404. MAXVALUE 999999999999999999999999999
  405. INCREMENT BY 1
  406. NOCYCLE
  407. NOORDER
  408. CACHE 20
  409. /
  410. CREATE SEQUENCE GHTDB.s_62_1_suppliers
  411. MINVALUE 1
  412. MAXVALUE 999999999999999999999999999
  413. INCREMENT BY 1
  414. NOCYCLE
  415. NOORDER
  416. CACHE 20
  417. /
  418. CREATE SEQUENCE GHTDB.s_63_1_shippers
  419. MINVALUE 1
  420. MAXVALUE 999999999999999999999999999
  421. INCREMENT BY 1
  422. NOCYCLE
  423. NOORDER
  424. CACHE 20
  425. /
  426. CREATE SEQUENCE GHTDB.s_65_1_employees
  427. MINVALUE 1
  428. MAXVALUE 999999999999999999999999999
  429. INCREMENT BY 1
  430. NOCYCLE
  431. NOORDER
  432. CACHE 20
  433. /
  434. CREATE SEQUENCE GHTDB.s_68_1_categories
  435. MINVALUE 1
  436. MAXVALUE 999999999999999999999999999
  437. INCREMENT BY 1
  438. NOCYCLE
  439. NOORDER
  440. CACHE 20
  441. /
  442. CREATE OR REPLACE TRIGGER GHTDB.tr_s_464_1_shoppingcart
  443. BEFORE INSERT
  444. ON GHTDB.shoppingcart
  445. FOR EACH ROW
  446. BEGIN
  447. IF (:new.RECORDID IS NULL) THEN
  448. SELECT S_464_1_SHOPPINGCART.nextval
  449. INTO :NEW.RECORDID
  450. FROM dual;
  451. END IF;
  452. END;
  453. /
  454. CREATE OR REPLACE TRIGGER GHTDB.tr_s_59_1_products
  455. BEFORE INSERT
  456. ON GHTDB.products
  457. FOR EACH ROW
  458. BEGIN
  459. IF (:new.PRODUCTID IS NULL) THEN
  460. SELECT S_59_1_PRODUCTS.nextval
  461. INTO :NEW.PRODUCTID
  462. FROM dual;
  463. END IF;
  464. END;
  465. /
  466. CREATE OR REPLACE TRIGGER GHTDB.tr_s_62_1_suppliers
  467. BEFORE INSERT
  468. ON GHTDB.suppliers
  469. FOR EACH ROW
  470. BEGIN
  471. IF (:new.SUPPLIERID IS NULL) THEN
  472. SELECT S_62_1_SUPPLIERS.nextval
  473. INTO :NEW.SUPPLIERID
  474. FROM dual;
  475. END IF;
  476. END;
  477. /
  478. CREATE OR REPLACE TRIGGER GHTDB.tr_s_63_1_shippers
  479. BEFORE INSERT
  480. ON GHTDB.shippers
  481. FOR EACH ROW
  482. BEGIN
  483. IF (:new.SHIPPERID IS NULL) THEN
  484. SELECT S_63_1_SHIPPERS.nextval
  485. INTO :NEW.SHIPPERID
  486. FROM dual;
  487. END IF;
  488. END;
  489. /
  490. CREATE OR REPLACE TRIGGER GHTDB.tr_s_68_1_categories
  491. BEFORE INSERT
  492. ON GHTDB.categories
  493. FOR EACH ROW
  494. BEGIN
  495. IF (:new.CATEGORYID IS NULL) THEN
  496. SELECT S_68_1_CATEGORIES.nextval
  497. INTO :NEW.CATEGORYID
  498. FROM dual;
  499. END IF;
  500. END;
  501. /
  502. CREATE OR REPLACE VIEW GHTDB.current_product_list (
  503. productid,
  504. productname
  505. ) AS
  506. SELECT Product_List.ProductID, Product_List.ProductName
  507. FROM Products Product_List
  508. WHERE
  509. (
  510. (( Product_List.Discontinued ) = 0))
  511. /
  512. CREATE OR REPLACE VIEW GHTDB.customer_and_suppliers_by_cit (
  513. city,
  514. companyname,
  515. contactname,
  516. relationship
  517. ) AS
  518. SELECT City, CompanyName, ContactName, 'Customers' Relationship
  519. FROM Customers UNION SELECT City, CompanyName, ContactName, 'Suppliers'
  520. FROM Suppliers
  521. /
  522. CREATE OR REPLACE VIEW GHTDB.products_above_average_price (
  523. productname,
  524. unitprice
  525. ) AS
  526. SELECT Products.ProductName, Products.UnitPrice
  527. FROM Products
  528. WHERE Products.UnitPrice > (
  529. SELECT AVG(UnitPrice)
  530. FROM Products )
  531. /
  532. CREATE OR REPLACE PACKAGE BODY "GHTDB"."GHTPKG" AS
  533. --Procedure declerations:
  534. procedure ghsp_pkgAmbig(res out rct1) is
  535. begin
  536. --Return a value which indocates that the procedure 'ghsp_pkgAmbig' was called not from within GHTPKG.
  537. declare IN_GHTPKG varchar2(4) := 'TRUE';
  538. begin
  539. open res for
  540. select IN_GHTPKG as IN_PKG from dual;
  541. end;
  542. end;
  543. procedure ghsp_inPkg(CustomerIdPrm in char, result out rct1) is
  544. begin
  545. OPEN result FOR
  546. SELECT * FROM Customers where CustomerId=CustomerIdPrm;
  547. end;
  548. END;
  549. /
  550. CREATE OR REPLACE PROCEDURE "GHTDB"."GH_MULTIRECORDSETS" (
  551. RCT_Employees OUT GHTPKG.RCT1,
  552. RCT_Customers OUT GHTPKG.RCT1,
  553. RCT_Orders OUT GHTPKG.RCT1
  554. )
  555. IS
  556. -- Declare cursor
  557. m_RCT_Employees GHTPKG.RCT1;
  558. m_RCT_Customers GHTPKG.RCT1;
  559. m_RCT_Orders GHTPKG.RCT1;
  560. BEGIN
  561. OPEN m_RCT_Employees FOR
  562. SELECT EmployeeId, LastName FROM Employees where EmployeeId in (1,2) ORDER BY EMPLOYEEID ASC;
  563. OPEN m_RCT_Customers FOR
  564. SELECT CustomerId, CompanyName,ContactName FROM Customers where CustomerId in ('MORGK','NORTS') ORDER BY CustomerId ASC;
  565. -- return empty result set
  566. OPEN m_RCT_Orders FOR
  567. SELECT OrderId, ShipAddress,ShipVia, ShipCity FROM Orders where OrderId=-1 ;
  568. RCT_Employees := m_RCT_Employees;
  569. RCT_Customers := m_RCT_Customers;
  570. RCT_Orders := m_RCT_Orders;
  571. END;
  572. /
  573. CREATE OR REPLACE PROCEDURE "GHTDB"."GH_INOUT1" (
  574. INPARAM IN VARCHAR DEFAULT NULL,
  575. OUTPARAM OUT INTEGER
  576. )
  577. AS
  578. L_INPARAM VARCHAR(30) := INPARAM;
  579. BEGIN
  580. OUTPARAM := 100;
  581. END;
  582. /
  583. CREATE OR REPLACE PROCEDURE "GHTDB"."GH_CREATETABLE" AS
  584. Begin
  585. --craete a temporary table
  586. execute immediate 'Create global temporary Table ghtdb.temp_tbl (Col1 int,Col2 int)';
  587. --insert values to the table
  588. execute immediate 'insert into ghtdb.temp_tbl values (11,12)';
  589. execute immediate 'insert into ghtdb.temp_tbl values (21,22)';
  590. execute immediate 'insert into ghtdb.temp_tbl values (31,32)';
  591. --execute select on the created table
  592. execute immediate 'select col1 as Value1, col2 as Value2 from ghtdb.temp_tbl';
  593. execute immediate 'drop table temp_tbl';
  594. end;
  595. /
  596. CREATE OR REPLACE PROCEDURE "GHTDB"."GH_REFCURSOR1" (
  597. RCT_Employees OUT GHTPKG.RCT1
  598. )
  599. IS
  600. m_RCT_Employees GHTPKG.RCT1;
  601. BEGIN
  602. OPEN m_RCT_Employees FOR
  603. SELECT EmployeeId, LastName FROM GHTDB.Employees where EmployeeId = 1;
  604. RCT_Employees := m_RCT_Employees;
  605. END;
  606. /
  607. CREATE OR REPLACE PROCEDURE "GHTDB"."GH_REFCURSOR2" (
  608. IN_EMPLOYEEID INTEGER,
  609. RCT_Employees OUT GHTPKG.RCT1
  610. )
  611. IS
  612. m_RCT_Employees GHTPKG.RCT1;
  613. BEGIN
  614. OPEN m_RCT_Employees FOR
  615. SELECT EmployeeId, LastName FROM GHTDB.Employees where EmployeeId = IN_EMPLOYEEID;
  616. RCT_Employees := m_RCT_Employees;
  617. END;
  618. /
  619. CREATE OR REPLACE PROCEDURE "GHTDB"."GH_REFCURSOR3" (
  620. IN_LASTNAME VARCHAR2,
  621. RCT_Employees OUT GHTPKG.RCT1
  622. )
  623. IS
  624. m_RCT_Employees GHTPKG.RCT1;
  625. BEGIN
  626. OPEN m_RCT_Employees FOR
  627. SELECT EmployeeId, LastName FROM GHTDB.Employees where LastName = IN_LASTNAME;
  628. RCT_Employees := m_RCT_Employees;
  629. END;
  630. /
  631. CREATE OR REPLACE PROCEDURE GHTDB.GHSP_TYPES_SIMPLE_1 (
  632. T_NUMBER IN NUMBER,
  633. T_LONG IN LONG,
  634. T_FLOAT IN FLOAT,
  635. T_VARCHAR IN VARCHAR2,
  636. T_NVARCHAR IN NVARCHAR2,
  637. T_CHAR IN CHAR,
  638. T_NCHAR IN NCHAR,
  639. RESULT OUT GHTPKG.RCT1
  640. )
  641. AS
  642. BEGIN
  643. OPEN RESULT FOR
  644. SELECT T_NUMBER AS T_NUMBER, T_LONG AS T_LONG, T_FLOAT AS T_FLOAT, T_VARCHAR AS T_VARCHAR, T_NVARCHAR AS T_NVARCHAR, T_CHAR AS T_CHAR, T_NCHAR AS T_NCHAR FROM DUAL;
  645. RETURN;
  646. END;
  647. /
  648. CREATE OR REPLACE PROCEDURE GHTDB.GHSP_TYPES_SIMPLE_2 (
  649. T_NUMBER IN OUT NUMBER,
  650. T_LONG IN OUT LONG,
  651. T_FLOAT IN OUT FLOAT,
  652. T_VARCHAR IN OUT VARCHAR2,
  653. T_NVARCHAR IN OUT NVARCHAR2,
  654. T_CHAR IN OUT CHAR,
  655. T_NCHAR IN OUT NCHAR
  656. )
  657. AS
  658. BEGIN
  659. T_NUMBER := T_NUMBER * 2;
  660. T_LONG := UPPER(T_LONG);
  661. T_FLOAT := T_FLOAT * 2;
  662. T_VARCHAR := UPPER(T_VARCHAR);
  663. T_NVARCHAR := UPPER(T_NVARCHAR);
  664. T_CHAR := UPPER(T_CHAR);
  665. T_NCHAR := UPPER(T_NCHAR);
  666. END;
  667. /
  668. CREATE OR REPLACE PROCEDURE GHTDB.GHSP_TYPES_SIMPLE_3 (
  669. ID1 IN CHAR,
  670. P_NUMBER OUT NUMBER,
  671. P_LONG OUT LONG,
  672. P_FLOAT OUT FLOAT,
  673. P_VARCHAR OUT VARCHAR2,
  674. P_NVARCHAR OUT NVARCHAR2,
  675. P_CHAR OUT CHAR,
  676. P_NCHAR OUT NCHAR
  677. )
  678. AS
  679. BEGIN
  680. SELECT T_NUMBER, T_LONG, T_FLOAT, T_VARCHAR, T_NVARCHAR, T_CHAR, T_NCHAR INTO P_NUMBER, P_LONG, P_FLOAT, P_VARCHAR, P_NVARCHAR, P_CHAR, P_NCHAR FROM TYPES_SIMPLE WHERE ID = ID1;
  681. RETURN;
  682. END;
  683. /
  684. CREATE OR REPLACE PROCEDURE GHTDB.GHSP_TYPES_SIMPLE_4 (
  685. ID1 IN CHAR,
  686. RESULT OUT GHTPKG.RCT1,
  687. RESULT1 OUT GHTPKG.RCT1,
  688. RESULT2 OUT GHTPKG.RCT1
  689. )
  690. IS
  691. m_result GHTPKG.RCT1;
  692. m_result1 GHTPKG.RCT1;
  693. m_result2 GHTPKG.RCT1;
  694. BEGIN
  695. insert into TYPES_SIMPLE(ID,T_NUMBER) values (ID1,50);
  696. OPEN m_result FOR
  697. SELECT * FROM TYPES_SIMPLE where ID = ID1;
  698. update TYPES_SIMPLE set T_NUMBER=60 where Id = ID1;
  699. OPEN m_result1 FOR
  700. SELECT * FROM TYPES_SIMPLE where ID = ID1;
  701. delete from TYPES_SIMPLE where ID = ID1;
  702. OPEN m_result2 FOR
  703. SELECT * FROM TYPES_SIMPLE where ID = ID1;
  704. RESULT := m_result;
  705. RESULT1 := m_result1;
  706. RESULT2 := m_result2;
  707. END;
  708. /
  709. CREATE OR REPLACE PROCEDURE GHTDB.GHSP_TYPES_SIMPLE_5(
  710. RESULT OUT GHTPKG.RCT1
  711. )AS
  712. BEGIN
  713. DECLARE
  714. T_NUMBER NUMBER(10) := 21;
  715. T_LONG LONG := 'abcdefghijklmnopqrstuvwxyz1234567890~!@#$%^&*()_+-=[]\|;:,./<>? ';
  716. T_FLOAT FLOAT(10) := 1.234;
  717. T_VARCHAR VARCHAR2(10) := 'qwertasdfg';
  718. T_NVARCHAR NVARCHAR2(10) := 'qwertasdfg';
  719. T_CHAR CHAR(10) := 'abcdefghij';
  720. T_NCHAR NCHAR(10) := 'abcdefghij';
  721. BEGIN
  722. OPEN RESULT FOR
  723. SELECT T_NUMBER,T_LONG, T_FLOAT, T_VARCHAR, T_NVARCHAR, T_CHAR, T_NCHAR FROM DUAL;
  724. RETURN;
  725. END;
  726. END;
  727. /
  728. CREATE OR REPLACE PROCEDURE "GHTDB"."GHSP_PKGAMBIG" (
  729. res out ghtpkg.rct1
  730. )
  731. as
  732. begin
  733. --Return a value which indocates that the procedure 'ghsp_pkgAmbig' was called not from within GHTPKG.
  734. declare IN_GHTPKG varchar2(5) := 'FALSE';
  735. begin
  736. open res for
  737. select IN_GHTPKG as IN_PKG from dual;
  738. end;
  739. end;
  740. /
  741. CREATE OR REPLACE PROCEDURE "GHTDB"."GH_DUMMY" (
  742. EmployeeIDPrm in NUMBER,
  743. result OUT GHTPKG.RCT1
  744. )
  745. as
  746. begin
  747. OPEN result FOR
  748. SELECT EMPLOYEEID,
  749. LASTNAME,
  750. FIRSTNAME,
  751. TITLE,
  752. TITLEOFCOURTESY,
  753. BIRTHDATE,
  754. HIREDATE,
  755. ADDRESS,
  756. CITY,
  757. REGION,
  758. POSTALCODE,
  759. COUNTRY,
  760. HOMEPHONE,
  761. EXTENSION,
  762. REPORTSTO,
  763. PHOTOPATH,
  764. MYCOLUMN
  765. FROM GHTDB.EMPLOYEES where EmployeeID > EmployeeIDPrm;
  766. RETURN;
  767. end;
  768. /
  769. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.categories TO PUBLIC;
  770. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.current_product_list TO PUBLIC;
  771. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.customercustomerdemo TO PUBLIC;
  772. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.customerdemographics TO PUBLIC;
  773. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.customers TO PUBLIC;
  774. GRANT EXECUTE ON GHTDB.GH_MULTIRECORDSETS TO PUBLIC;
  775. --GRANT EXECUTE ON GHTDB.custordersorders TO PUBLIC;
  776. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.employees TO PUBLIC;
  777. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.employeeterritories TO PUBLIC;
  778. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.products TO PUBLIC;
  779. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.products_above_average_price TO PUBLIC;
  780. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.region TO PUBLIC;
  781. --GRANT EXECUTE ON salesbycategory TO PUBLIC;
  782. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.suppliers TO PUBLIC;
  783. --GRANT EXECUTE ON ten_most_expensive_products TO PUBLIC;
  784. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB.territories TO PUBLIC;
  785. ---------------------------------------------------------------------------------------------------------
  786. ---------------------------------------------------------------------------------------------------------
  787. ---------------------------------------------------------------------------------------------------------
  788. DROP TABLE GHTDB_EX.CUSTOMERS;
  789. DROP TABLE GHTDB_EX.categories;
  790. DROP USER GHTDB_EX CASCADE;
  791. CREATE USER "GHTDB_EX"
  792. IDENTIFIED BY "GHTDB_EX" DEFAULT TABLESPACE "USERS"
  793. TEMPORARY TABLESPACE "TEMP" ;
  794. GRANT CONNECT, RESOURCE TO "GHTDB_EX";
  795. CREATE OR REPLACE PACKAGE GHTDB_EX.GHTPKG
  796. AS
  797. TYPE RCT1 IS REF CURSOR;
  798. IDENTITY INTEGER;
  799. END;
  800. /
  801. CREATE TABLE GHTDB_EX.CUSTOMERS (
  802. customerid CHAR(10) NOT NULL,
  803. companyname VARCHAR2(80) NULL,
  804. contactname VARCHAR2(60) NULL,
  805. contacttitle VARCHAR2(60) NULL,
  806. address VARCHAR2(120) NULL,
  807. city VARCHAR2(30) NULL,
  808. region VARCHAR2(30) NULL,
  809. postalcode VARCHAR2(20) NULL,
  810. country VARCHAR2(30) NULL,
  811. phone VARCHAR2(48) NULL,
  812. fax VARCHAR2(48) NULL,
  813. picture VARCHAR2(48) NULL
  814. )
  815. TABLESPACE USERS
  816. /
  817. CREATE TABLE GHTDB_EX.categories (
  818. categoryid VARCHAR2(20) NOT NULL,
  819. categoryname VARCHAR2(30) NOT NULL,
  820. description CLOB NULL
  821. )
  822. TABLESPACE USERS
  823. /
  824. CREATE OR REPLACE PROCEDURE "GHTDB_EX"."GH_DUMMY"
  825. (CustomerIdPrm IN CHAR,
  826. result OUT GHTPKG.RCT1)
  827. AS
  828. BEGIN
  829. OPEN result FOR
  830. SELECT * FROM Customers where CustomerID=CustomerIdPrm;
  831. RETURN;
  832. END;
  833. /
  834. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB_EX.CUSTOMERS TO PUBLIC;
  835. GRANT DELETE,INSERT,SELECT,UPDATE ON GHTDB_EX.CATEGORIES TO PUBLIC;
  836. GRANT EXECUTE ON GHTDB_EX.gh_dummy TO PUBLIC;
  837. COMMIT;
  838. exit