La stored procedure non restituirà solo il risultato dell'ultimo SELECT. Devi effettivamente restituire il valore:
CREATE OR REPLACE FUNCTION fun() RETURNS text AS $$
BEGIN
--- ....
RETURN(SELECT dblink_disconnect());
END
$$ LANGUAGE plpgsql;
Stai ricevendo l'errore perché Postgres si aspetta che la funzione restituisca qualcosa di tipo testo, ma la tua funzione non restituisce nulla.