Als de instructies die u probeert te "evalueren" altijd hetzelfde gegevenstype retourneren, kunt u een eval()-functie schrijven die de door Grzegorz genoemde EXECUTE gebruikt.
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
Dan zou je iets kunnen doen als
SELECT eval('select 41') + 1;
Maar deze aanpak werkt niet als uw dynamische uitspraken iets anders opleveren voor elke uitdrukking die u wilt evalueren.
Houd er ook rekening mee dat dit een enorm beveiligingsrisico met zich meebrengt door willekeurige verklaringen uit te voeren. Of dat een probleem is, hangt af van uw omgeving. Als dat alleen in interactieve SQL-sessies wordt gebruikt, is dat geen probleem.