CREATE or REPLACE FUNCTION insert_dormitorio(vinmueble_id dormitorio.inmueble_id%TYPE,vnum dormitorio.num%TYPE,
vcapacidad dormitorio.capacidad%TYPE,vpvp dormitorio.pvp%TYPE,vcalidad dormitorio.calidad%TYPE ) RETURNS BOOLEAN AS $$
BEGIN
/* Comprobar si existe el inmueble al que pertenece el dormitorio y descartar el resultado de la consulta */
PERFORM * FROM inmueble WHERE id = vinmueble_id;
IF FOUND THEN
  PERFORM * FROM dormitorio
  WHERE inmueble_id = vinmueble_id and num = vnum;
 /* Comprobar que el dormitorio no existe (antes de realizar la inserción) y descartar el resultado de la consulta */
 IF NOT FOUND THEN
   INSERT INTO dormitorio VALUES
   (vinmueble_id,vnum,vcapacidad,vpvp,vcalidad);
   RAISE NOTICE 'Dormitorio insertado correctamente';
   RETURN TRUE;
 ELSE
   RAISE NOTICE 'El dormitorio % del inmueble % ya existe',vnum,vinmueble_id;
 END IF;
ELSE
  RAISE NOTICE 'No se puede insertar un dormitorio en un inmueble (%) que no existe',vinmueble_id;
END IF;
RETURN FALSE;
END;
$$ LANGUAGE plpgsql;