Advertisement
xJupiter

Untitled

May 13th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.66 KB | None | 0 0
  1. ------ Type Declaration ------
  2.  
  3. -- Region_t
  4. create or replace type Region_t as object
  5. (
  6. COD NUMBER(4,0),
  7. DESIGNATION VARCHAR2(50 BYTE),
  8. NUT1 VARCHAR2(50 BYTE)
  9. );
  10.  
  11. -- District_t
  12. create or replace type District_t as object
  13. (
  14. COD NUMBER(4,0),
  15. DESIGNATION VARCHAR2(50 BYTE),
  16. REGION ref Region_t
  17. );
  18.  
  19. -- DistrictsRef_tab_t
  20. create or replace type DistrictsRef_tab_t as table of ref District_t;
  21.  
  22. -- Municipality
  23. create or replace type Municipality_t as object
  24. (
  25. COD NUMBER(4,0),
  26. DESIGNATION VARCHAR2(50 BYTE),
  27. DISTRICT ref District_t,
  28. REGION ref Region_t
  29. );
  30.  
  31. -- MunicipalitiesRef_tab_t
  32. create or replace type MunicipalitiesRef_tab_t as table of ref Municipality_t;
  33.  
  34. -- RoomType
  35. create or replace type RoomType_t as object
  36. (
  37. ROOMTYPE NUMBER(4,0),
  38. DESCRIPTION VARCHAR2(50 BYTE)
  39. );
  40.  
  41. -- Facility
  42. create or replace type Facility_t as object
  43. (
  44. ID number(4,0),
  45. NAME varchar2(80),
  46. CAPACITY number(8,0),
  47. ROOMTYPE ref RoomType_t,
  48. ADDRESS varchar2(80),
  49. MUNICIPALITY ref Municipality_t
  50. );
  51.  
  52. -- FacilitiesRef_tab_t
  53. create or replace type FacilitiesRef_tab_t as table of ref Facility_t;
  54.  
  55. -- Activity
  56. create or replace type Activity_t as object
  57. (
  58. REF varchar2(20),
  59. ACTIVITY varchar2(20)
  60. );
  61.  
  62. -- Activities_tab_t
  63. create or replace type Activities_tab_t as table of Activity_t;
  64.  
  65. -- Region Districts
  66. alter type Region_t
  67. add attribute (DISTRICTS DistrictsRef_tab_t) CASCADE;
  68.  
  69. -- Region Municipalities
  70. alter type Region_t
  71. add attribute (MUNICIPALITIES MunicipalitiesRef_tab_t) CASCADE;
  72.  
  73. -- District Municipalities
  74. alter type District_t
  75. add attribute (MUNICIPALITIES MunicipalitiesRef_tab_t) CASCADE;
  76.  
  77. -- Municipality Facilities
  78. alter type Municipality_t
  79. add attribute (FACILITIES FacilitiesRef_tab_t) CASCADE;
  80.  
  81. -- Facility Activities
  82. alter type Facility_t
  83. add attribute (ACTIVITIES Activities_tab_t) CASCADE;
  84.  
  85. ------ Table Creation ------
  86.  
  87. -- Regions
  88. create table Regions of Region_t
  89. nested table Districts store as Region_Districts,
  90. nested table Municipalities store as Region_Municipalities;
  91.  
  92. -- Districts
  93. create table Districts of District_t
  94. nested table Municipalities store as District_Municipalities;
  95.  
  96. -- Municipalities
  97. create table Municipalities of Municipality_t
  98. nested table Facilities store as Municipality_Facilities;
  99.  
  100. -- RoomTypes
  101. create table RoomTypes of RoomType_t;
  102.  
  103. -- Facilities
  104. create table Facilities of Facility_t
  105. nested table Activities store as Facility_Activities;
  106.  
  107. ------ Insert Values ------
  108.  
  109. -- Regions TODO
  110. delete from Regions;
  111. insert into Regions (COD, DESIGNATION, NUT1)
  112. select r.COD, r.DESIGNATION, r.NUT1
  113. from gtd8.Regions r;
  114.  
  115. select *
  116. from Regions;
  117.  
  118. -- Districts TODO
  119. delete from Districts;
  120. insert into Districts (COD, DESIGNATION, REGION)
  121. select d.COD, d.DESIGNATION, (select ref(r) from Regions r where r.COD = d.REGION)
  122. from gtd8.Districts d;
  123.  
  124. select *
  125. from Districts;
  126.  
  127. -- Municipalities TODO
  128. delete from Municipalities;
  129. insert into Municipalities (COD, DESIGNATION, DISTRICT, REGION)
  130. select m.COD, m.DESIGNATION, (select ref(d) from Districts d where d.COD = m.DISTRICT), (select ref(r) from Regions r where r.COD = m.REGION)
  131. from gtd8.Municipalities m;
  132.  
  133. select count(*)
  134. from Municipalities;
  135.  
  136. -- RoomTypes
  137. delete from RoomTypes;
  138. insert into RoomTypes (ROOMTYPE, DESCRIPTION)
  139. select rt.ROOMTYPE, rt.DESCRIPTION
  140. from gtd8.RoomTypes rt;
  141.  
  142. select *
  143. from RoomTypes;
  144.  
  145. -- Facilities
  146. delete from Facilities;
  147. insert into Facilities (ID, NAME, CAPACITY, ROOMTYPE, ADDRESS, MUNICIPALITY, ACTIVITIES)
  148. select f.ID, f.NAME, f.CAPACITY, (select ref(rt) from RoomTypes rt where rt.ROOMTYPE = f.ROOMTYPE), f.ADDRESS, (select ref(m) from Municipalities m where m.COD = f.MUNICIPALITY)
  149. , Activities_tab_t(Activity_t(a.ref, a.Activity))
  150. from gtd8.Facilities f
  151. join gtd8.Uses u ON u.ID = f.ID
  152. join gtd8.Activities a on a.REF = u.REF;
  153.  
  154. delete from Facilities;
  155. insert into Facilities (ID, NAME, CAPACITY, ROOMTYPE, ADDRESS, MUNICIPALITY, ACTIVITIES)
  156. select f.ID, f.NAME, f.CAPACITY, (select ref(rt) from RoomTypes rt where rt.ROOMTYPE = f.ROOMTYPE), f.ADDRESS, (select ref(m) from Municipalities m where m.COD = f.MUNICIPALITY)
  157. , (select cast(collect(a)) as Activities_tab_t) from gtd8.activities a where m.cod = f.municipality.cod)
  158. from gtd8.Facilities f
  159. join gtd8.Uses u ON u.ID = f.ID
  160. join gtd8.Activities a on a.REF = u.REF;
  161.  
  162. SELECT CAST(COLLECT(phone_numbers) AS phone_book_t)
  163. FROM customers;
  164.  
  165. select *
  166. from Facilities;
  167.  
  168. ------ Insert Nested References ------
  169.  
  170. update municipalities m
  171. set facilities = (select cast(collect(ref(f)) as FacilitiesRef_tab_t) from Facilities f where m.cod = f.municipality.cod);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement