On dirait que vous vous compliquez la vie. Laissez-les nuls, puis faites :
where (param1 is null or t.col1 like param1)
and (param2 is null or t.col2 like param2)
Si param1
(l'argument de la procédure ; la vie est plus simple lorsque vos noms de paramètre/variable et les noms de colonne sont différents... j'ai donc changé les noms de colonne pour le rendre un peu plus clair) est nul, il est fondamentalement ignoré* et toutes les lignes passent cette partie du filtre, que la valeur de la colonne soit nulle ou non nulle. Si param2
n'est pas null alors le is null
vérifier cela échoue et seules les lignes avec des valeurs de colonne (non nulles) qui correspondent à param2
correspond à cette partie du filtre.
* Conditions dans un or
peut être évalué dans n'importe quel ordre; mettre le is null
vérifier d'abord ne signifie pas nécessairement le like
ne sera pas évalué - mais l'optimiseur est assez intelligent pour ce genre de choses