Lekérdezésben paraméterre feltétel

Adatbázis kezelő
Butters
Hozzászólások: 15
Csatlakozott: 2010. február 23., kedd 12:04

Lekérdezésben paraméterre feltétel

Hozzászólás 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
OpenOffice 3.2/Windows XP
Butters
Hozzászólások: 15
Csatlakozott: 2010. február 23., kedd 12:04

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

Hozzászólás Szerző: Butters »

A :x smiley -k helyére azt akartam írni, hogy ":x" (kettőspont x), nem tudtam, hogy az egy smiley kód.
OpenOffice 3.2/Windows XP
Butters
Hozzászólások: 15
Csatlakozott: 2010. február 23., kedd 12:04

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

Hozzászólás 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?
OpenOffice 3.2/Windows XP
Válasz küldése