Ano, pomocí některé z následujících možností:
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);
...nejsou pohyblivé. Budou fungovat, ale budou mít nejhorší z dostupných možností.
Pokud máte pouze jeden parametr, jsou lepší alternativou IF/ELSE a samostatné, přizpůsobené příkazy.
Další možností je dynamické SQL. Ale kódování dynamického SQL je k ničemu, pokud přenesete nesměnitelné predikáty v prvním příkladu. Dynamické SQL vám umožňuje přizpůsobit dotaz a zároveň vyhovět mnoha cestám. Ale také riskuje vkládání SQL, takže by mělo být prováděno za parametrizovanými dotazy (nejlépe v rámci uložených procedur/funkcí v balíčcích.