Pokud příkazy, které se pokoušíte "eval", vždy vracejí stejný datový typ, můžete napsat funkci eval(), která používá EXECUTE zmíněný Grzegorzem.
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
Pak můžete udělat něco jako
SELECT eval('select 41') + 1;
Tento přístup však nebude fungovat, pokud vaše dynamické příkazy vrátí něco jiného pro každý výraz, který chcete vyhodnotit.
Mějte také na paměti, že to otevírá obrovské bezpečnostní riziko spuštěním libovolných příkazů. Pokud je to problém, závisí na vašem prostředí. Pokud se to používá pouze v interaktivních relacích SQL, pak to není problém.