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

PL/pgSQL untuk kueri dinamis all-in-one

Bisakah Anda memposting beberapa definisi tabel dan contoh kueri tentang apa yang Anda coba lakukan? Saya tidak 100% yakin apa yang Anda cari, tetapi ada beberapa bentuk SQL "dinamis" menggunakan prosedur/fungsi tersimpan:

  1. Buat fungsi yang mengambil parameter input (yaitu tipe kategori, styleId, eventName, areaId) dan hubungkan nilai tersebut ke permintaan SQL "statis". Berikut ini contoh cuplikan kueri untuk kasus Anda:

Berikut adalah contoh nyata:

CREATE OR REPLACE FUNCTION SP_IGLGetItem(
    pItemId INTEGER
) 
RETURNS TABLE(
    ItemId INTEGER,
    ItemName VARCHAR(100),
    ItemCategory CHAR(2) 
AS
$$
BEGIN
    RETURN QUERY
    SELECT i.ItemId, i.ItemName, i.ItemCategory
    FROM Item i
    WHERE (i.ItemId = pItemId OR pItemId IS NULL) -- Return single item (if specified, otherwise return all)
    ;
END;
$$
LANGUAGE 'plpgsql';
  1. Buat string yang berisi SQL yang ingin Anda jalankan secara dinamis berdasarkan kondisi yang berbeda, nilai parameter, dll. Ini sedinamis yang Anda bisa.

  2. Jalankan pernyataan SQL "statis" yang berbeda secara kondisional berdasarkan nilai parameter input Anda.

Apakah salah satu dari ini cocok dengan situasi Anda?

PL/PGSQL hanyalah bahasa yang digunakan untuk menulis prosedur/fungsi tersimpan di Postgres. Jika Anda benar-benar membutuhkan pembuatan SQL dinamis, maka Anda sebaiknya menulis fungsi menggunakan PL/PGSQL.

Pilihan lainnya, adalah secara dinamis menghasilkan SQL yang Anda inginkan di aplikasi klien Anda dan kemudian kirimkan SQL itu secara langsung untuk dieksekusi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan python sqlalchemy untuk mengeksekusi kueri mentah dengan pernyataan WITH

  2. perbarui beberapa baris dalam satu kueri tetapi input yang kami harapkan adalah dari objek json dari banyak data

  3. Bagaimana cara mengatur nama aplikasi di url Postgresql JDBC?

  4. Salin beberapa file CSV ke postgres

  5. Docker Compose + Postgres:Mengekspos port