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 '[email protected]'
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.