Jika pernyataan yang Anda coba "eval" selalu mengembalikan tipe data yang sama, Anda bisa menulis fungsi eval() yang menggunakan EXECUTE yang disebutkan oleh 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
Kemudian Anda bisa melakukan sesuatu seperti
SELECT eval('select 41') + 1;
Namun pendekatan ini tidak akan berhasil jika pernyataan dinamis Anda menampilkan sesuatu yang berbeda untuk setiap ekspresi yang ingin Anda evaluasi.
Juga ingat bahwa ini membuka risiko keamanan yang besar dengan menjalankan pernyataan sewenang-wenang. Jika itu masalah tergantung pada lingkungan Anda. Jika itu hanya digunakan dalam sesi SQL interaktif maka itu tidak menjadi masalah.