Ja, met een van de volgende opties:
WHERE m.id_pk = NVL(n_RequiredId, m.id_pk);
WHERE m.id_pk = COALESCE(n_RequiredId, m.id_pk);
WHERE (n_RequiredId IS NULL OR m.id_pk = n_RequiredId);
... zijn niet sargable. Ze zullen werken, maar de slechtste van de beschikbare opties uitvoeren.
Als u maar één parameter heeft, zijn de IF/ELSE en afzonderlijke, op maat gemaakte uitspraken een beter alternatief.
De volgende optie daarna is dynamische SQL. Maar het coderen van dynamische SQL is nutteloos als u de niet-sargable predikaten in het eerste voorbeeld overdraagt. Dynamische SQL stelt u in staat om de query aan te passen terwijl u meerdere paden accommodeert. Maar het brengt ook SQL-injectie met zich mee, dus het moet worden uitgevoerd achter geparametriseerde query's (bij voorkeur binnen opgeslagen procedures/functies in pakketten.