Oldal: 1 / 1

Lekérdezésben paraméterre feltétel

Elküldve: 2010. március 2., kedd 17:27
Szerző: Butters
Lekérdezésben akarok egy :x paramétert úgy használni, hogy ha üresen hagyják akkor ne szűkitsen, ha viszont van értéke akkor "tábla"."x" = :x szűkítés legyen. Sehogy sem sikerül eltalálnom a szintaktikát. Próbálkoztam azzal, hogy

Kód: Egész kijelölése

AND (:x is null or "tabla"."x" = :x)
, de ez :x null értéke esetén nem hoz eredményt. Másik elképzelésem a CASE WHEN használata volt, bár nem tudom, hogy azt lehet-e WHERE feltételben használni. Az így nézet ki:

Kód: Egész kijelölése

AND CASE :x WHEN :x IS NULL THEN 1=1 ELSE "tabla"."x" = :x END CASE
Ez meg syntax error -os

Re: Lekérdezésben paraméterre feltétel

Elküldve: 2010. március 2., kedd 17:29
Szerző: Butters
A :x smiley -k helyére azt akartam írni, hogy ":x" (kettőspont x), nem tudtam, hogy az egy smiley kód.

Re: Lekérdezésben paraméterre feltétel

Elküldve: 2010. március 3., szerda 16:48
Szerző: Butters
Sokat szenvedtem a leírt problémával, és úgy tűnik, hogy ez egy bug. Ha az ":x" paraméteren kívűl bármi mást is bekérek akkor üres lesz a lekérdezés, Ha csak az ":x" -et akkor működik, bár ilyenkor is fennáll az a kellemetlen körülmény, hogy ha a kódban többszőr hivatkozunk egy paraméterre akkor a lekérdezés futtatásakor helyesen csak egyszer kéri be, de jelentésben már annyiszor ahányszor a kódban szerepel. Erre találtam egy megoldást az angol fórumon, leírom hátha másnak is segít még. A select részben kell bekérni a paramétert, alias -t adni neki és a feltételben az alias -ra hivatkozni.

Kód: Egész kijelölése

select "barmi", :xy AS "akarmi" from "table" where ("akarmi" is null or "table"."barmi" = "akarmi")
Önmagában ez remekül működik is, de ahogy bekerül a lekérdezésbe egy másik paraméter is a lekérdezés eredménye üres lesz. Van esetleg erre is megoldás?