Kun je wat tabeldefinities en een voorbeeldquery posten van wat je probeert te doen? Ik weet niet 100% zeker wat je zoekt, maar er zijn een aantal vormen van "dynamische" SQL die gebruik maken van opgeslagen procedures/functies:
- Maak een functie die invoerparameters nodig heeft (d.w.z. categoryType, styleId, eventName, areaId) en plug die waarden in een "statisch" SQL-verzoek. Hier is een voorbeeld van een queryfragment voor uw geval:
Hier is een echt voorbeeld:
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';
-
Bouw een tekenreeks met de SQL die u dynamisch wilt uitvoeren op basis van verschillende voorwaarden, parameterwaarden, enz. Dit is zo dynamisch als u kunt krijgen.
-
Voer conditioneel verschillende "statische" SQL-instructies uit op basis van de waarden van uw invoerparameters.
Komt een van deze punten overeen met uw situatie?
PL/PGSQL is slechts de taal die wordt gebruikt om opgeslagen procedures/functies in Postgres te schrijven. Als je echt dynamische SQL-generatie nodig hebt, kun je het beste een functie schrijven met PL/PGSQL.
Een andere optie is om de gewenste SQL dynamisch in uw clienttoepassing te genereren en die SQL vervolgens rechtstreeks in te dienen om te worden uitgevoerd.