Bạn không thể sử dụng trực tiếp các biến psql bên trong mã plpgsql. Việc thay thế biểu tượng bị chặn bên trong chuỗi:
postgres=> select :'xx';
?column?
----------
AHOJ
(1 row)
postgres=> select ' :xx ';
?column?
----------
:xx
(1 row)
Nhưng bạn có thể đặt biến phiên máy chủ và sau đó sử dụng loại biến này trong mã plpgsql (ở phía máy chủ):
postgres=> set myvars.xx = :'xx';
SET
postgres=> do $$ begin
raise notice '>>%<<', current_setting('myvars.xx');
end $$;
NOTICE: >>AHOJ<<
DO
Bạn có thể sử dụng kỹ thuật tương tự từ dòng lệnh, xem:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html
lưu ý cuối cùng - mã
BEGIN SELECT some; END;
không hợp lệ trong plpgsql. Kết quả của bất kỳ SELECT
nào s nên được lưu trữ trong một số biến. Postgres không có khả năng trả về kết quả của SELECT
miễn phí cho khách hàng - DO
câu lệnh không tương đương với thủ tục MS SQL.