Bởi vì các khối PL thực sự là các hằng số văn bản trong mã nên các biến bên trong không được thay thế bên trong chúng theo cách thông thường. May mắn thay, có thể sử dụng biến phiên để chia sẻ dữ liệu giữa các khối SQL / PL khác nhau:
set foo.bar to :v1; -- Name should contains the dot, don't ask me why
show foo.bar; -- Check that the value was assigned
do $$
declare
myvar text := current_setting('foo.bar');
begin
raise info '%', myvar; -- Output variable value
end $$;
Để đảm bảo rằng biến được gán và đặt giá trị mặc định nếu nó không phải là:
\if :{?v1}
set foo.bar to :v1;
\else
set foo.bar to 'default';
\endif
Thêm chi tiết:
https://www.postgresql.org/docs/current/app-psql.html#PSQL-METACOMMAND-IFhttps://www.postgresql.org/docs/current/app-psql.html # APP-PSQL-INTERPOLATION