Ja, ved at bruge et af følgende:
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);
...kan ikke sarges. De vil fungere, men udføre de værste af de tilgængelige muligheder.
Hvis du kun har én parameter, er IF/ELSE og separate, skræddersyede udsagn et bedre alternativ.
Den næste mulighed efter det er dynamisk SQL. Men kodning af dynamisk SQL er ubrugelig, hvis du overfører de ikke-sargerbare prædikater i det første eksempel. Dynamisk SQL giver dig mulighed for at skræddersy forespørgslen, mens du tager højde for adskillige stier. Men det risikerer også SQL-injektion, så det bør udføres bag parametriserede forespørgsler (helst inden for lagrede procedurer/funktioner i pakker).