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

gunakan \set variabel di dalam blok deklarasi plpgsql

Penjelasannya adalah, sesuai manual :

Tubuh DO pernyataan adalah string yang dikutip dolar. Jadi tidak ada interpolasi di dalam string.

Karena harus berupa string literal, Anda juga tidak dapat menggabungkan string dengan cepat. Manual:

Tetapi Anda dapat menggabungkan string dan kemudian menjalankannya.

Penekanan saya yang berani. Anda hanya perlu mendapatkan kutipan yang benar:

test=# \set test 'some value'
test=# \set code 'DECLARE v_test text := ' :'test' '; BEGIN RAISE NOTICE ''test var is: %'', v_test; END'
test=# DO :'code';
NOTICE: test var is: some value
DO
test=#

Tapi saya lebih suka membuat fungsi (sementara) dan meneruskan nilai sebagai parameter (tempat interpolasi psql berfungsi). Detail dalam jawaban terkait ini di dba.SE:




  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 mencocokkan satu hari penuh dengan bidang datetime?

  2. berikan jumlah parameter yang tidak diketahui ke klausa IN menggunakan JDBC dan Postgres

  3. GALAT:nilai kunci duplikat melanggar batasan unik di postgreSQL

  4. Masukkan ke dalam postgres SQL

  5. USERT di PostgreSQL menggunakan jOOQ