Ако изразите, които се опитвате да "eval", винаги връщат един и същ тип данни, можете да напишете функция eval(), която използва EXECUTE, споменат от 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
Тогава можете да направите нещо като
SELECT eval('select 41') + 1;
Но този подход няма да работи, ако вашите динамични изрази връщат нещо различно за всеки израз, който искате да оцените.
Също така имайте предвид, че това създава огромен риск за сигурността, като изпълнява произволни изрази. Ако това е проблем, зависи от вашата среда. Ако това се използва само в интерактивни SQL сесии, това не е проблем.