[Oracle] Kleiner SQL "Trick": Speziellen Datensatz oder alle Datensätze zurückgeben

Thomas Darimont

Erfahrenes Mitglied
Hallo,

hier mal ein kleines Beispiel wie man in Oracle SQL, bzw. auch allgemein in
SQL, parameterisierte Abfragen mit einem Datenfilter formulieren kann:

- Wenn ein Filter angegeben ist, wird entweder die zutreffende Datenmenge oder nichts zurückgeben (wenn das Suchkriterium nicht erfüllt werden kann).

- Wird der Filter nicht angegeben (Filter = null) so werden alle Datensätze zurückgegeben.

SQL:
WITH
DATA AS (
  SELECT 1 as key FROM dual
  UNION 
  SELECT 2 AS KEY FROM dual
  UNION
  SELECT 3 AS KEY FROM dual
  UNION
  SELECT 4 as key FROM dual
)
select * from data where coalesce(to_number(:filter),key) = key

Der entscheidende Teil der Arbeit wird hierbei über die coalesce-Funktion erledigt.

Gruß Tom
 

Neue Beiträge

Zurück