Si les instructions que vous essayez d'"évaluer" renvoient toujours le même type de données, vous pouvez écrire une fonction eval() qui utilise l'EXECUTE mentionné par Grzegorz.
create or replace function eval(expression text) returns integer
as
$body$
declare
result integer;
begin
execute expression into result;
return result;
end;
$body$
language plpgsql
Ensuite, vous pourriez faire quelque chose comme
SELECT eval('select 41') + 1;
Mais cette approche ne fonctionnera pas si vos instructions dynamiques renvoient quelque chose de différent pour chaque expression que vous souhaitez évaluer.
Gardez également à l'esprit que cela ouvre un énorme risque de sécurité en exécutant des instructions arbitraires. Si c'est un problème, cela dépend de votre environnement. Si cela n'est utilisé que dans les sessions SQL interactives, ce n'est pas un problème.