Anda dapat menggunakan variabel psql . Itu diinterpolasi dalam kode SQL. Per dokumentasi:
Perhatikan bahwa (per dokumentasi ):
Jadi Anda tidak dapat bekerja dengan parameter posisi dalam bentuk $1 . Saya berasumsi Anda menyalin potongan kode ini dari badan fungsi, dan itulah alasan parameter posisi?
Sejak PostgreSQL 9.2, bahkan fungsi SQL dapat mereferensikan parameter berdasarkan nama. Per dokumentasi:
Fungsi PL/pgSQL telah mendukung parameter bernama di badan fungsi sejak v8.0.
Konvensi penamaan pilihan saya adalah menambahkan parameter fungsi dengan _ untuk menghindari konflik penamaan. Tapi itu masalah selera dan gaya.
Hanya setengah solusi
Jadi, contoh Anda dapat berfungsi seperti ini:
db=> \set _name 'troy'
db=> \set _email 'example@sqldat.com'
db=> select * from users where name=:'_name' and email=:'_email';
Anda masih harus menyiapkan string kueri ...
Perhatikan tanda kutip di :'_name' . Itu memiliki efek yang sama dengan menerapkan quote_literal() pada tali. Detail dalam manual.