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

Catatan CTE PostgreSQL sebagai parameter untuk berfungsi

Jika fungsi mengembalikan satu record maka:

WITH cte AS (SELECT 1 a, 2 b)
SELECT my_function(a, b) FROM cte;

akan bekerja. Namun, jika fungsinya adalah SRF (Set-Returning-Function), maka Anda perlu menggunakan LATERAL, untuk memberi tahu database bahwa Anda ingin memasukkan hasil tabel sebelumnya dalam pernyataan JOIN ke fungsi nanti di IKUTI. Ini dilakukan seperti ini:

WITH cte AS (SELECT 1 a, 2 b)
SELECT * FROM cte, LATERAL my_function(a, b);

LATERAL akan menyebabkan PostgreSQL mengambil setiap baris dari CTE dan menjalankan "my_function" dengan nilai dari baris tersebut, mengembalikan hasil fungsi tersebut ke pernyataan SELECT secara keseluruhan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite berfungsi, tetapi basis data yang dimigrasikan PostgreSQL menyebabkan KESALAHAN - Django 3.0

  2. Masalah membangun klausa di mana untuk memasukkan nilai null/0

  3. PostgreSQL mengonversi nama bulan menjadi angka

  4. Mengapa Anda harus belajar PostgreSQL?

  5. Bagaimana Width_Bucket() Bekerja di PostgreSQL