Wie man eine bedingte where-Klausel mit where in PL/SQL innerhalb der Prozedur

Ich habe eine ziemlich einfache Gespeicherte Prozedur, die ich in Schwierigkeiten bin, das zu tun, weil ich bin neu in SQL und PL/SQL. Ich Habe eine Tabelle mit einem Namen-Spalte, die den Datentyp varchar(55).

Entdeckte ich, dass, wenn der Benutzer führt mein Verfahren mit einem leeren string als Parameter die WIE statment bringt alle Zeilen aus TABELLE1

SELECT *
FROM TABLE1
WHERE COLUMN LIKE VARIABLE || '%'
AND...

So, ich habe versucht, ändern Sie die Abfrage so, wenn die VARIABLE, die übergeben wird mit einem leeren string kann immer noch durchführen, andere Bedingungen in der where-Anweisung.

SELECT *
FROM TABLE1
WHERE (VARIABLE <> '' AND COLUMN LIKE VARIABLE || '%')
AND...

Aber jetzt, wo ich den pass als variable (", NULL, 'anystring') bekomme ich keine Zeilen zurückgegeben.

Wie kann ich eine Abfrage erstellen, die überprüft, ob die variable unterscheidet sich von einer leeren Zeichenfolge, und wenn es ist, es führt den LIKE-Anweisung mit der Variablen korrekt?

  • WHERE (VARIABLE IS NULL OR COLUMN LIKE VARIABLE || '%') AND...
  • Nun ist die Abfrage immer wieder Wert auch mit " als Parameter
  • Ich entfernte die "UND" - Anweisung und jetzt habe ich getestet mit nur der LIKE-Anweisung...gleiche Ergebnis. Alle Zeilen
  • WHERE ((VARIABLE = '' OR VARIABLE IS NULL) AND VARIABLE || '%')
  • Nun, wenn pass " - Wert zu Variablen es gibt null Zeilen und wenn nicht, pass es gibt alle Werte... =( Hab nicht gedacht, dass diese Sache ist, wie dieses schwer zu tun
  • beachten Sie, dass in Oracle VARIABLE = '' immer mit unknown ausgewertet, weil '' null ist.

Schreibe einen Kommentar