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:
- 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';
-
Buat string yang berisi SQL yang ingin Anda jalankan secara dinamis berdasarkan kondisi yang berbeda, nilai parameter, dll. Ini sedinamis yang Anda bisa.
-
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.