Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.68 KB | None | 0 0
  1. create or replace procedure "PROCEDURE_MAESTRO"
  2. (iduser IN NUMBER)
  3. is
  4. pokeid NUMBER;
  5. pokenombre
  6. begin
  7. SELECT id_pokemon AS "ID", nombre_pokemon AS "POKEMON"
  8. FROM pokemon
  9. MINUS
  10. SELECT id_pokemon, nombre_pokemon
  11. FROM pokemon, salvaje, pokedex
  12. WHERE usuario_id = 3 AND id_salvaje = salvaje_id AND pokemon_id = id_pokemon AND estado = 1;
  13. end;​
  14.  
  15. create or replace trigger "USUARIO_T1"
  16. AFTER
  17. update on "USUARIO"
  18. for each row
  19. DECLARE
  20. achiev NUMBER;
  21. begin
  22. SELECT count(*) INTO achiev FROM adquisicion WHERE usuario_id = :new.id_usuario AND logro_id = 1;
  23. IF :new.pokemones = 6 THEN
  24. IF achiev = 0 THEN
  25. INSERT INTO adquisicion VALUES(1, :new.id_usuario, 3);
  26. END IF;
  27. END IF;
  28. end;​
  29.  
  30. create or replace procedure "ACTUALIZAR_POKEDEX"
  31. (iduser IN NUMBER,
  32. idsalvaje IN NUMBER,
  33. capturado IN NUMBER)
  34. is
  35. antes NUMBER;
  36. despues NUMBER;
  37. begin
  38. SELECT count(*) INTO antes
  39. FROM (SELECT id_pokemon FROM pokemon
  40. MINUS
  41. SELECT id_pokemon FROM pokemon, salvaje, pokedex
  42. WHERE usuario_id = iduser AND id_salvaje = salvaje_id AND pokemon_id = id_pokemon AND estado = 1);
  43. UPDATE pokedex SET estado = capturado WHERE usuario_id = iduser AND salvaje_id = idsalvaje;
  44. SELECT count(*) INTO despues
  45. FROM (SELECT id_pokemon FROM pokemon
  46. MINUS
  47. SELECT id_pokemon FROM pokemon, salvaje, pokedex
  48. WHERE usuario_id = iduser AND id_salvaje = salvaje_id AND pokemon_id = id_pokemon AND estado = 1);
  49. IF antes <> despues THEN
  50. UPDATE usuario SET pokemones = pokemones + 1 WHERE id_usuario = iduser;
  51. END IF;
  52. end;​
  53.  
  54. create or replace procedure "ACTUALIZAR_SLOTS"
  55. (iduser IN NUMBER,
  56. iditem IN NUMBER,
  57. nuevaquantity IN NUMBER)
  58. is
  59. old NUMBER;
  60. idmochila NUMBER;
  61. total NUMBER;
  62. begin
  63. IF nuevaquantity < 0 THEN RAISE_APPLICATION_ERROR(-20003, 'Nueva cantidad negativa.');
  64. ELSE
  65. SELECT id_mochila, peso INTO idmochila, total FROM mochila WHERE usuario_id = iduser;
  66. SELECT cantidad INTO old FROM slots WHERE item_id = iditem AND mochila_id = idmochila;
  67. IF total - old + nuevaquantity < 101 THEN UPDATE mochila SET peso = total - old + nuevaquantity WHERE id_mochila = idmochila;
  68. UPDATE slots SET cantidad = nuevaquantity WHERE mochila_id = idmochila AND item_id = iditem;
  69. ELSE RAISE_APPLICATION_ERROR(-20002, 'Cantidad invalida.');
  70. END IF;
  71. END IF;
  72. end;​
  73.  
  74. create or replace procedure "ELIMINAR_SLOT"
  75. (iduser NUMBER,
  76. iditem NUMBER)
  77. is
  78. quantity NUMBER;
  79. idmochila NUMBER;
  80. total NUMBER;
  81. begin
  82. SELECT id_mochila, peso INTO idmochila, total FROM mochila WHERE usuario_id = iduser;
  83. SELECT cantidad INTO quantity FROM slots WHERE mochila_id = idmochila AND item_id = iditem;
  84. UPDATE mochila SET peso = total - quantity WHERE id_mochila = idmochila;
  85. DELETE FROM slots WHERE mochila_id = idmochila AND item_id = iditem;
  86. end;​
  87.  
  88. create or replace procedure "INSERTAR_A_MOCHILA"
  89. (iduser IN NUMBER,
  90. iditem IN NUMBER,
  91. quantity IN NUMBER)
  92. is
  93. idmochila NUMBER;
  94. total NUMBER;
  95. begin
  96. SELECT id_mochila, peso into idmochila, total FROM mochila WHERE usuario_id = iduser;
  97. IF quantity > 101 THEN
  98. RAISE_APPLICATION_ERROR (-20001, 'Item utiliza mas del espacio maximo');
  99. ELSIF ((total+quantity) < 101) THEN
  100. INSERT INTO SLOTS VALUES (idmochila, iditem, quantity);
  101. UPDATE mochila SET peso = total + quantity WHERE id_mochila = idmochila;
  102. ELSE
  103. RAISE_APPLICATION_ERROR (-20000, 'Tamaño de mochila excedido');
  104. END IF;
  105. end;​
  106.  
  107. create or replace procedure "INSERTAR_A_POKEDEX"
  108. (iduser IN VARCHAR2,
  109. salvajeid IN VARCHAR2,
  110. capturado IN VARCHAR2)
  111. is
  112. antes NUMBER;
  113. despues NUMBER;
  114. begin
  115. SELECT count(*) INTO antes
  116. FROM (SELECT id_pokemon FROM pokemon
  117. MINUS
  118. SELECT id_pokemon FROM pokemon, salvaje, pokedex
  119. WHERE usuario_id = iduser AND id_salvaje = salvaje_id AND pokemon_id = id_pokemon AND estado = 1);
  120. INSERT INTO pokedex VALUES (iduser, salvajeid, capturado);
  121. SELECT count(*) INTO despues
  122. FROM (SELECT id_pokemon FROM pokemon
  123. MINUS
  124. SELECT id_pokemon FROM pokemon, salvaje, pokedex
  125. WHERE usuario_id = iduser AND id_salvaje = salvaje_id AND pokemon_id = id_pokemon AND estado = 1);
  126. IF antes <> despues THEN
  127. UPDATE usuario SET pokemones = pokemones + 1 WHERE id_usuario = iduser;
  128. END IF;
  129. end;​
  130.  
  131. create or replace procedure "PROCEDURE_MAESTRO"
  132. (iduser IN NUMBER)
  133. is
  134. tabla SYS_REFCURSOR;
  135. begin
  136. open tabla FOR
  137. SELECT id_pokemon, nombre_pokemon
  138. FROM pokemon
  139. MINUS
  140. SELECT id_pokemon, nombre_pokemon
  141. FROM pokemon, salvaje, pokedex
  142. WHERE usuario_id = 3 AND id_salvaje = salvaje_id AND pokemon_id = id_pokemon AND estado = 1;
  143. end;​
  144.  
  145. create or replace procedure "REGISTRAR_USUARIO"
  146. (nombre_us IN VARCHAR2,
  147. apellidos_us IN VARCHAR2,
  148. edad_us IN NUMBER,
  149. mail_us IN VARCHAR2,
  150. login_us IN VARCHAR2,
  151. pass_us IN VARCHAR2)
  152. is
  153. iduser NUMBER;
  154. begin
  155. INSERT INTO usuario (nombre, apellidos, edad, mail, fecha_registro, login, password, pokemones)
  156. VALUES (nombre_us, apellidos_us, edad_us, mail_us, current_date, login_us, pass_us, 0);
  157.  
  158. SELECT id_usuario INTO iduser FROM usuario WHERE nombre = nombre_us;
  159. INSERT INTO MOCHILA (usuario_id, estado, peso) VALUES (iduser, 0, 0);
  160. end;​
  161.  
  162. CREATE OR REPLACE FORCE VIEW "VIEW_LOGROS" ("NOMBRE", "NOMBRE_LOGRO") AS
  163. SELECT nombre AS "Nombre", nombre_logro AS "Logro"
  164. FROM usuario, logros, adquisicion
  165. WHERE (id_usuario = usuario_id) AND (id_logro = logro_id)
  166. ORDER BY nombre;​
  167.  
  168. CREATE OR REPLACE FORCE VIEW "VIEW_MAESTROS" ("LOGIN", "NOMBRE", "APELLIDOS", "Total") AS
  169. SELECT login, nombre, apellidos, SUM(puntos) AS "Total"
  170. FROM usuario, adquisicion, logros, (SELECT DISTINCT usuario_id
  171. FROM adquisicion, logros
  172. WHERE logro_id = '1') maestros
  173. WHERE maestros.usuario_id = adquisicion.usuario_id AND adquisicion.logro_id = logros.id_logro AND usuario.id_usuario = adquisicion.usuario_id
  174. GROUP BY usuario.login, usuario.nombre, usuario.apellidos;​
  175.  
  176. CREATE OR REPLACE FORCE VIEW "VIEW_MOCHILA" ("USUARIOS", "ITEM", "CANTIDAD") AS
  177. SELECT usuario.login AS Usuarios, items.nombre_item AS Item, slots.cantidad AS Cantidad
  178. FROM usuario, mochila, slots, items
  179. WHERE id_usuario = usuario_id AND id_mochila = mochila_id AND item_id = id_item AND slots.cantidad > 0
  180. ORDER BY login, nombre_item;​
  181.  
  182. CREATE OR REPLACE FORCE VIEW "VIEW_POKEDEX" ("NOMBRE", "NOMBRE_POKEMON", "ESTADO") AS
  183. SELECT nombre AS "Usuario", nombre_pokemon AS "Pokemon", estado AS "Estado"
  184. FROM usuario, salvaje, pokemon, pokedex
  185. WHERE (id_usuario = usuario_id) AND (salvaje_id = id_salvaje) AND (pokemon_id = id_pokemon)
  186. ORDER BY nombre, nombre_pokemon, estado;​
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement