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

Untuk apa '$$' digunakan di PL/pgSQL

Tanda dolar ini ($$ ) digunakan untuk kutipan dolar , yang sama sekali tidak spesifik untuk definisi fungsi . Ini dapat digunakan untuk mengganti tanda kutip tunggal yang menyertakan string literal (konstanta) di mana saja dalam skrip SQL.

Tubuh suatu fungsi kebetulan berupa string literal. Kutipan dolar adalah pengganti khusus PostgreSQL untuk tanda kutip tunggal untuk menghindari keluarnya tanda kutip tunggal bersarang (secara rekursif). Anda juga bisa menyertakan badan fungsi dalam tanda kutip tunggal. Tapi kemudian Anda harus menghindari semua tanda kutip tunggal di tubuh:

CREATE OR REPLACE FUNCTION check_phone_number(text)
  RETURNS boolean
  LANGUAGE plpgsql STRICT IMMUTABLE AS
'
BEGIN
  IF NOT $1 ~  e''^\\+\\d{3}\\ \\d{3} \\d{3} \\d{3}$'' THEN
    RAISE EXCEPTION ''Malformed string "%". Expected format is +999 999'';
  END IF;
  RETURN true; 
END
';

Ini bukan ide yang bagus. Gunakan kutipan dolar sebagai gantinya. Lebih khusus lagi, letakkan juga token di antara $$ untuk membuat setiap pasangan unik - Anda mungkin ingin menggunakan tanda kutip dolar bersarang di dalam badan fungsi. Sebenarnya saya sering melakukannya.

CREATE OR REPLACE FUNCTION check_phone_number(text)
  RETURNS boolean  
  LANGUAGE plpgsql STRICT IMMUTABLE AS
$func$
BEGIN
 ...
END
$func$;

Lihat:

  • Menyisipkan teks dengan tanda kutip tunggal di PostgreSQL

Mengenai pertanyaan kedua Anda:
Baca manual paling bagus di CREATE FUNCTION untuk memahami baris terakhir dari contoh Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menjalankan Beberapa Instance PostgreSQL pada Satu Host

  2. Db berbeda untuk pengujian di Django?

  3. Bagaimana cara memperbarui stempel waktu secara otomatis di PostgreSQL

  4. daftar postgresql dan pesan tabel berdasarkan ukuran

  5. Query K-Nearest Neighbor di PostGIS