ciao,
allora il trucco è nell' uso della funzione COALESCE
colaesce(x,y) restituisce il primo valore non nullo fra x e y
pertanto la query sara:
set @cognome = @cognome + '%'
where coalece(cognome,'') like @cognome
and coalesce(dataInizio,@dataInizio) >=dataInizio
and coalesce(dataFine,@dataFine) <=dataFine
sposto questo, è pericoloso passare al parmeter un campo di tipo testo,
ti conviene passare un oggetto DateTime, come dovrebbe essere.
Ciao!