(decode(:P1_REK_NAME, NULL, 'x', "NAME_REK") LIKE decode(:P1_REK_NAME, NULL, 'y', '%'||:P1_REK_NAME||'%'))
der decode prüft erstmal ob P1_REK_NAME null ist. Ist das so, wird ein x zurück gegeben. wenn es ungleich null ist wird "NAME_REK" zurückgegeben. und so baut sich stück für stück die abfrage zusammen.
Steht in P1_STAEDTE beispielsweise 'SAAL'etwas sähe der decode ausgeführt so aus:
"NAME_REK" LIKE '%SAAL%'
steht in P1_GEMEINDE nichts, also null sähe es so aus:
'x' like 'y'
das ist 'false' und wird beim select dann nicht berücksichtigt.
Hoffe du verstehst das gefummel jetzt etwas besser. Gibt vielleicht auch noch eine elegantere Lösung, aber so funktioniert es ja auch... :)
MfG
Andreas