Jeśli instrukcje, które próbujesz "ocenić", zawsze zwracają ten sam typ danych, możesz napisać funkcję eval(), która używa polecenia WYKONAJ wspomnianego przez Grzegorza.
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
Wtedy możesz zrobić coś takiego jak
SELECT eval('select 41') + 1;
Ale to podejście nie zadziała, jeśli instrukcje dynamiczne zwracają coś innego dla każdego wyrażenia, które chcesz ocenić.
Należy również pamiętać, że uruchamianie arbitralnych oświadczeń stwarza ogromne zagrożenie bezpieczeństwa. To, czy jest to problem, zależy od Twojego środowiska. Jeśli jest to używane tylko w interaktywnych sesjach SQL, nie stanowi to problemu.