Bạn có thể sử dụng biến psql . Chúng được nội suy trong mã SQL. Theo tài liệu:
Lưu ý rằng ( theo tài liệu ):
Vì vậy, bạn không thể làm việc với các tham số vị trí của biểu mẫu $1
. Tôi giả sử bạn sao chép những đoạn mã này từ các thân hàm và đó là lý do cho các tham số vị trí?
Kể từ PostgreSQL 9.2, ngay cả các hàm SQL cũng có thể tham chiếu các tham số theo tên. Theo tài liệu:
Các hàm PL / pgSQL đã hỗ trợ các tham số được đặt tên trong thân hàm kể từ v8.0.
Quy ước đặt tên ưa thích của tôi là thêm trước các tham số hàm với _
để tránh xung đột đặt tên. Nhưng đó là vấn đề về sở thích và phong cách.
Chỉ một nửa giải pháp
Vì vậy, ví dụ của bạn có thể hoạt động như sau:
db=> \set _name 'troy'
db=> \set _email '[email protected]'
db=> select * from users where name=:'_name' and email=:'_email';
Bạn vẫn phải chuẩn bị các chuỗi truy vấn ...
Lưu ý các dấu ngoặc kép trong :'_name'
. Điều đó có tác dụng tương tự như việc áp dụng quote_literal()
trên chuỗi. Chi tiết trong sách hướng dẫn.