PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menggunakan parameter posisi ($ 1,..) di psql

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengembalikan Postgresdump saat membangun gambar Docker?

  2. Gabungkan beberapa baris menjadi satu dengan lebih dari satu nilai baris dalam satu kolom

  3. Skema tabel yang memenuhi syarat dengan SQLAlchemy, SQLite, dan Postgresql?

  4. Cara membersihkan komentar dari file sql mentah

  5. Bekerja dengan DataSource, JNDI API di IntelliJ