Hvis de udsagn du forsøger at "eval" altid returnerer den samme datatype, kan du skrive en eval() funktion, der bruger EXECUTE nævnt af 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
Så kunne du gøre noget som
SELECT eval('select 41') + 1;
Men denne tilgang virker ikke, hvis dine dynamiske udsagn returnerer noget forskelligt for hvert udtryk, du vil evaluere.
Husk også på, at dette åbner en enorm sikkerhedsrisiko ved at køre vilkårlige udsagn. Hvis det er et problem, afhænger af dit miljø. Hvis det kun bruges i interaktive SQL-sessioner, er det ikke et problem.