Nếu các câu lệnh bạn đang cố gắng "eval" luôn trả về cùng một kiểu dữ liệu, bạn có thể viết một hàm eval () sử dụng EXECUTE được Grzegorz đề cập.
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
Sau đó, bạn có thể làm một cái gì đó như
SELECT eval('select 41') + 1;
Nhưng cách tiếp cận này sẽ không hoạt động nếu các câu lệnh động của bạn trả lại một cái gì đó khác nhau cho mỗi biểu thức mà bạn muốn đánh giá.
Cũng nên nhớ rằng điều này mở ra một rủi ro bảo mật lớn khi chạy các câu lệnh tùy ý. Nếu đó là một vấn đề phụ thuộc vào môi trường của bạn. Nếu điều đó chỉ được sử dụng trong các phiên SQL tương tác thì đó không phải là vấn đề.