Eso parece que te estás haciendo la vida difícil. Déjelos nulos, luego haga:
where (param1 is null or t.col1 like param1)
and (param2 is null or t.col2 like param2)
Si param1
(el argumento del procedimiento; la vida es más simple cuando los nombres de sus parámetros/variables y los nombres de las columnas son diferentes... así que cambié los nombres de las columnas para que quede un poco más claro) es nulo, básicamente se ignora* y todas las filas pasan esa parte del filtro, ya sea que el valor de la columna sea nulo o no. Si param2
es no nulo entonces el is null
verifique que falle y solo las filas con valores de columna (no nulos) que coincidan con param2
el valor cumple con esa parte del filtro.
* Condiciones en un or
se puede evaluar en cualquier orden; poner el is null
marcar primero no significa necesariamente el like
no se evaluará, pero el optimizador es bastante inteligente con ese tipo de cosas