Если операторы, которые вы пытаетесь "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, то это не проблема.