TEXT
FUNCTION reserva_livre(p_inicio RESERVA.inicio%TYPE, p_fim RESERVA.fim%TYPE, p_mesa MESA_RESERVADA.id_mesa%TYPE)
RETURN NUMBER IS
v_retorno NUMBER;
v_temp NUMBER;
BEGIN
   SELECT SUM(id_cliente) INTO v_temp FROM RESERVA R, MESA_RESERVADA MR
   WHERE ((R.id = MR.id_reserva) AND (MR.id_mesa = p_mesa)
         AND
         ((p_inicio >= inicio AND p_inicio < fim)
         OR
         (p_fim > inicio AND p_fim <= fim)
         OR
         (p_inicio < inicio AND p_fim > fim)));

   IF (v_temp IS NOT NULL) THEN
      v_retorno := 0;
   ELSE
      v_retorno := 1;
   END IF;
   
   RETURN v_retorno;
   
END reserva_livre;