create or replace package p_ese4 as

procedure prenota(
    agenzia         in agenzie.nomeAgenzia%TYPE,
    spesa           in prenotazioni.spesa%TYPE,
    destinazione    in prenotazioni.destinazione%TYPE
);

troppePrenotazioni EXCEPTION;

end p_ese4;
/


create or replace package body p_ese4 as

procedure prenota(
    agenzia         in agenzie.nomeAgenzia%TYPE,
    spesa           in prenotazioni.spesa%TYPE,
    destinazione    in prenotazioni.destinazione%TYPE
)
is
prenotazioneFallita boolean;
begin

  htp.htmlOpen;
  htp.headOpen;
  htp.title('Stato della transazione');
  htp.headClose;
  htp.print('<BODY TEXT="#FFFFFF" BGCOLOR="#009900">');

  begin
    insert into prenotazioni
    values (idPrenotazioneSeq.nextval,agenzia,sysdate(),spesa,destinazione);
  exception
   when troppePrenotazioni then prenotazioneFallita := true;
  end;

  if prenotazioneFallita 
  then htp.print('Transazione annullata: numero di prenotazioni maggiore di 3');
  else
    htp.print('Prenotazione inserita correttamente');
  end if;
  htp.bodyClose;
  htp.htmlClose;

end prenota;

end p_ese4;
/