Да, като използвате някое от следните:
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);
...не подлежат на саргиране. Те ще работят, но изпълняват най-лошата от наличните опции.
Ако имате само един параметър, IF/ELSE и отделните, персонализирани изрази са по-добра алтернатива.
Следващата опция след това е динамичен SQL. Но кодирането на динамичен SQL е безполезно, ако пренесете предикатите, които не могат да се саргират в първия пример. Динамичният SQL ви позволява да персонализирате заявката, като същевременно поемате множество пътища. Но също така рискува SQL инжектиране, така че трябва да се изпълнява зад параметризирани заявки (за предпочитане в рамките на съхранени процедури/функции в пакети.