Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SET serveroutput ON
- create or replace PROCEDURE infoYear (anio INTEGER) IS
- --EXCEPCIONES
- anio_no_valido EXCEPTION;
- --VARIABLES
- --CURSORES
- CURSOR c_rally IS
- SELECT DISTINCT codRally, nombre, pais, COUNT(numeroTramo) AS nTramos
- FROM (WRC.RALLY INNER JOIN WRC.TRAMO USING (codRally))
- INNER JOIN WRC.PARTICIPA USING (codRally)
- WHERE (EXTRACT(year FROM fecha)) = anio
- GROUP BY nombre, codRally, pais, numeroTramo
- HAVING COUNT(codPiloto) >=3;
- CURSOR c_pilotos(cod_rally WRC.RALLY.codRally%TYPE) IS
- SELECT nombreP, tiempoRally
- FROM WRC.PILOTO INNER JOIN WRC.PARTICIPA USING (codPiloto)
- WHERE codRally = cod_rally
- ORDER BY tiempoRally;
- BEGIN
- --Año < 2000 OR > 2019 --> Exception no valido
- IF anio < 2000 OR anio > 2019 THEN
- RAISE anio_no_valido;
- END IF;
- --Mostrar ralis de ese año (mínimo 3 pilotos)
- dbms_output.put_line('------------------------------------------------------------------');
- dbms_output.put_line(' Ralis del año ' || anio || ' ');
- dbms_output.put_line('------------------------------------------------------------------');
- FOR i_cursor IN c_rally LOOP
- dbms_output.put_line('*** ' || i_cursor.nombre || ' (' || i_cursor.pais || ') tramos: ' || i_cursor.nTramos);
- FOR j_cursor IN c_pilotos(i_cursor.codRally) LOOP
- dbms_output.put_line(j_cursor.nombreP || ' ' || j_cursor.tiempoRally);
- END LOOP;
- END LOOP;
- --Nombre de los pilotos y tiempo total invertido en el rally (orden ascendente por tiempo empleado)
- EXCEPTION
- WHEN anio_no_valido THEN
- dbms_output.put_line('ERROR: el año no es válido');
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement