Advertisement
Guest User

todas las weas

a guest
Oct 28th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. SELECT LOGRO.NOMBRE, USUARIO_ID
  2. FROM LOGRO, ADQUISICION, USUARIO
  3. WHERE ID_LOGRO = LOGRO_ID AND USUARIO_ID = ID_USUARIO ---> VIEW_LOGRO
  4.  
  5. SELECT ID_USUARIO, USUARIO.NOMBRE, TOTAL
  6. FROM VIEW_PUNTOS, LOGRO, ADQUISICION, USUARIO
  7. WHERE (LOGRO.ID_LOGRO = ADQUISICION.LOGRO_ID AND USUARIO.ID_USUARIO = ADQUISICION.USUARIO_ID)
  8. AND (LOGRO.NOMBRE = 'Maestro' AND USUARIO.ID_USUARIO = VIEW_PUNTOS.USUARIO_ID) ---> VIEW_MAESTRO
  9.  
  10. SELECT USUARIO_ID,NOMBRE, ESTADO
  11. FROM POKEMON, POKEDEX, SALVAJE
  12. WHERE SALVAJE_ID = ID_SALVAJE AND POKEMON_ID = ID_POKEMON ---> VIEW_POKEDEX
  13.  
  14. SELECT USUARIO_ID, SUM(PUNTOS) AS TOTAL
  15. FROM LOGRO, ADQUISICION
  16. WHERE LOGRO.ID_LOGRO = ADQUISICION.LOGRO_ID
  17. GROUP BY USUARIO_ID ---> VIEW_PUNTOS
  18.  
  19. Select USUARIO_ID,NOMBRE, CANTIDAD
  20. FROM MOCHILA,ITEMS, SLOTS
  21. WHERE (ITEMS.ID_ITEM = SLOTS.ITEM_ID AND SLOTS.CANTIDAD > 0) AND (SLOTS.MOCHILA_ID = MOCHILA.ID_MOCHILA) ---> VIEW_MOCHILA
  22.  
  23. create or replace TRIGGER TRIGGER_MOCHILA
  24. BEFORE INSERT OR DELETE OR UPDATE ON SLOTS FOR EACH ROW
  25. DECLARE contador number; aux number; check_items number;
  26. BEGIN
  27. IF INSERTING THEN
  28. SELECT CANTIDAD_ITEMS INTO check_items FROM MOCHILA WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
  29. IF check_items > 100 THEN
  30. RAISE_APPLICATION_ERROR(-20000, 'Usuario ya posee 100 objetos.');
  31. ELSE
  32. UPDATE MOCHILA SET CANTIDAD_ITEMS = CANTIDAD_ITEMS + :NEW.CANTIDAD WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
  33. SELECT CANTIDAD_ITEMS INTO aux FROM MOCHILA WHERE ID_MOCHILA= :NEW.MOCHILA_ID;
  34. IF aux >= 100 THEN UPDATE MOCHILA SET ESTADO = 1 WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
  35. END IF;
  36. IF aux < 100 THEN UPDATE MOCHILA SET ESTADO = 0 WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
  37. END IF;
  38. END IF;
  39. END IF;
  40. IF UPDATING THEN
  41. SELECT CANTIDAD_ITEMS INTO check_items FROM MOCHILA WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
  42. IF :NEW.CANTIDAD - :OLD.CANTIDAD > 0 AND check_items > 100 THEN
  43. RAISE_APPLICATION_ERROR(-20000, 'Usuario ya posee 100 objetos.');
  44. ELSE IF :NEW.CANTIDAD - :OLD.CANTIDAD < 0 AND check_items + :NEW.CANTIDAD - :OLD.CANTIDAD > 100 THEN
  45. RAISE_APPLICATION_ERROR(-20000, 'Usuario ya posee 100 objetos.');
  46. ELSE
  47. IF :NEW.CANTIDAD > :OLD.CANTIDAD THEN UPDATE MOCHILA SET CANTIDAD_ITEMS = CANTIDAD_ITEMS + :NEW.CANTIDAD - :OLD.CANTIDAD WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
  48. END IF;
  49. IF :NEW.CANTIDAD < :OLD.CANTIDAD THEN UPDATE MOCHILA SET CANTIDAD_ITEMS = CANTIDAD_ITEMS - :OLD.CANTIDAD + :NEW.CANTIDAD WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
  50. END IF;
  51. SELECT CANTIDAD_ITEMS INTO aux FROM MOCHILA WHERE ID_MOCHILA= :NEW.MOCHILA_ID;
  52. IF aux < 100 THEN UPDATE MOCHILA SET ESTADO = 0 WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
  53. END IF;
  54. IF aux >=100 THEN UPDATE MOCHILA SET ESTADO = 1 WHERE ID_MOCHILA = :OLD.MOCHILA_ID;
  55. END IF;
  56. END IF;
  57. END IF;
  58. END IF;
  59. IF DELETING THEN
  60. UPDATE MOCHILA SET CANTIDAD_ITEMS = CANTIDAD_ITEMS - :OLD.CANTIDAD WHERE ID_MOCHILA = :OLD.MOCHILA_ID;
  61. SELECT CANTIDAD_ITEMS INTO aux FROM MOCHILA WHERE ID_MOCHILA= :OLD.MOCHILA_ID;
  62. IF aux < 100 THEN UPDATE MOCHILA SET ESTADO = 0 WHERE ID_MOCHILA = :OLD.MOCHILA_ID;
  63. END IF;
  64. IF aux >=100 THEN UPDATE MOCHILA SET ESTADO = 1 WHERE ID_MOCHILA = :OLD.MOCHILA_ID;
  65. END IF;
  66. END IF;
  67. END;
  68.  
  69. create or replace TRIGGER TRIGGER_MAESTRO
  70. AFTER INSERT OR UPDATE OF ESTADO,USUARIO_ID,SALVAJE_ID ON POKEDEX FOR EACH ROW
  71. DECLARE cant_poke number;
  72. total_usuario number;
  73. BEGIN
  74. SELECT COUNT(ID_POKEMON) INTO cant_poke FROM POKEMON;
  75. UPDATE USUARIO SET CANTIDAD_POKEMON = CANTIDAD_POKEMON + :NEW.ESTADO WHERE ID_USUARIO = :NEW.USUARIO_ID;
  76. SELECT CANTIDAD_POKEMON INTO total_usuario FROM USUARIO WHERE ID_USUARIO = :NEW.USUARIO_ID;
  77. IF cant_poke = total_usuario THEN
  78. INSERT INTO ADQUISICION VALUES ('1',:NEW.USUARIO_ID,'10');
  79. END IF;
  80. END;
  81.  
  82. create or replace PROCEDURE PROCEDURE_MAESTRO(usuario in varchar) AS
  83. BEGIN
  84. FOR aRow in (SELECT NOMBRE,TIPO,PS FROM POKEMON WHERE ID_POKEMON NOT IN (SELECT DISTINCT POKEMON.ID_POKEMON FROM POKEMON,SALVAJE,POKEDEX
  85. WHERE POKEDEX.USUARIO_ID = usuario AND POKEDEX.SALVAJE_ID = SALVAJE.ID_SALVAJE AND SALVAJE.POKEMON_ID=POKEMON.ID_POKEMON))
  86. LOOP
  87. dbms_output.put_line('nombre: ' || aRow.NOMBRE || ' tipo: ' || aRow.TIPO || ' Ps: ' || aRow.PS);
  88. END LOOP;
  89. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement