Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. SET serveroutput ON
  2.  
  3. create or replace PROCEDURE infoYear (anio INTEGER) IS
  4. --EXCEPCIONES
  5. anio_no_valido EXCEPTION;
  6.  
  7. --VARIABLES
  8.  
  9.  
  10.  
  11. --CURSORES
  12. CURSOR c_rally IS
  13. SELECT DISTINCT codRally, nombre, pais, COUNT(numeroTramo) AS nTramos
  14. FROM (WRC.RALLY INNER JOIN WRC.TRAMO USING (codRally))
  15. INNER JOIN WRC.PARTICIPA USING (codRally)
  16. WHERE (EXTRACT(year FROM fecha)) = anio
  17. GROUP BY nombre, codRally, pais, numeroTramo
  18. HAVING COUNT(codPiloto) >=3;
  19.  
  20. CURSOR c_pilotos(cod_rally WRC.RALLY.codRally%TYPE) IS
  21. SELECT nombreP, tiempoRally
  22. FROM WRC.PILOTO INNER JOIN WRC.PARTICIPA USING (codPiloto)
  23. WHERE codRally = cod_rally
  24. ORDER BY tiempoRally;
  25. BEGIN
  26.  
  27. --Año < 2000 OR > 2019 --> Exception no valido
  28. IF anio < 2000 OR anio > 2019 THEN
  29. RAISE anio_no_valido;
  30. END IF;
  31.  
  32. --Mostrar ralis de ese año (mínimo 3 pilotos)
  33. dbms_output.put_line('------------------------------------------------------------------');
  34. dbms_output.put_line(' Ralis del año ' || anio || ' ');
  35. dbms_output.put_line('------------------------------------------------------------------');
  36. FOR i_cursor IN c_rally LOOP
  37. dbms_output.put_line('*** ' || i_cursor.nombre || ' (' || i_cursor.pais || ') tramos: ' || i_cursor.nTramos);
  38. FOR j_cursor IN c_pilotos(i_cursor.codRally) LOOP
  39. dbms_output.put_line(j_cursor.nombreP || ' ' || j_cursor.tiempoRally);
  40. END LOOP;
  41. END LOOP;
  42.  
  43. --Nombre de los pilotos y tiempo total invertido en el rally (orden ascendente por tiempo empleado)
  44.  
  45. EXCEPTION
  46. WHEN anio_no_valido THEN
  47. dbms_output.put_line('ERROR: el año no es válido');
  48. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement