La procédure stockée ne renverra pas simplement le résultat du dernier SELECT. Vous devez réellement renvoyer la valeur :
CREATE OR REPLACE FUNCTION fun() RETURNS text AS $$
BEGIN
--- ....
RETURN(SELECT dblink_disconnect());
END
$$ LANGUAGE plpgsql;
Vous obtenez l'erreur car Postgres s'attend à ce que la fonction renvoie quelque chose de type texte, mais votre fonction ne renvoie rien.