Uložená procedura nevrátí pouze výsledek posledního SELECT. Ve skutečnosti musíte vrátit hodnotu:
CREATE OR REPLACE FUNCTION fun() RETURNS text AS $$
BEGIN
--- ....
RETURN(SELECT dblink_disconnect());
END
$$ LANGUAGE plpgsql;
Chyba se vám zobrazuje, protože Postgres očekává, že funkce vrátí něco typu text, ale vaše funkce nevrací nic.