/*
  Adott két séma:
  SOFOR( rendszam VARCHAR2(8), nev VARCHAR2(20), szuldatum DATE )
  FUVAR( rendszam VARCHAR2(8), t_indul TIMESTAMP, t_erkezik TIMESTAMP, szuldatum DATE);
  
  A program kilistázza hónapokra bontva azt, hogy ki hány percet vezetett az adott
  hónapban a 2014-es évben. 
  
*/
SET SERVEROUTPUT ON
DECLARE 
  v_rendszam SOFOR.RENDSZAM%TYPE;
  v_nev      SOFOR.NEV%TYPE;
  v_menetido_ho NUMBER;
  CURSOR soforLista IS
    SELECT rendszam, nev FROM SOFOR;
  
  FUNCTION menetidoHonapban( rsz IN VARCHAR2, honap IN NUMBER ) RETURN NUMBER
  IS
    v_menetido NUMBER;
  BEGIN
    SELECT SUM( EXTRACT (MINUTE FROM (t_erkezik - t_indul) ) ) 
    INTO v_menetido
    FROM FUVAR
    WHERE rendszam=rsz AND EXTRACT(MONTH FROM (t_erkezik)) = honap AND EXTRACT(YEAR FROM (t_erkezik)) = 2014;
    RETURN v_menetido;
  END menetidoHonapban;
BEGIN
  OPEN soforLista;
  LOOP 
    DBMS_OUTPUT.PUT_LINE('=====================================');
    FETCH soforlista INTO v_rendszam, v_nev;
    EXIT WHEN soforLista%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE('Név: ' || v_nev);
    FOR honap IN 1..12
    LOOP
      DBMS_OUTPUT.PUT_LINE('------------------------------------');
      v_menetido_ho := menetidoHonapban(v_rendszam, honap);
      DBMS_OUTPUT.PUT_LINE(honap || '     ' || v_menetido_ho);
    END LOOP;
  END LOOP;
  CLOSE soforLista;
  DBMS_OUTPUT.PUT_LINE('=====================================');
END;
