No, ufffff, no tengo valores nulos .Ya había valorado esta opción, aunque la he vuelto a considerar.
Lo único que me retorna (pasando todos los parametros vacios, menos el del Contratos.ExeCon_Con = @ExeCon_sp) son aquellos contratos que tienen clientes y que estos clientes tienen teléfono, en el caso de no tener teléfono, no los muestra.
Esto me está llevando a realizar diferentes consultas según los parametros que pase con valor además de que tablas necesite consultar, creciéndome exponencialmente las consultas a razón de las combinaciones de todas las tablas relacionadas con los contratos o alguna tabla esclava de estos.
Por ejemplo, si quiero que la consulta me retorne todos los contratos con cliente independientemente del número de teléfono, es decir, tenga teléfono con cualquier número o no tenga teléfono ese determinado cliente del contrato, escribo la misma consulta pero sin el INNER JOIN de relación con el contrato:
...
FROM
Contratos
LEFT OUTER JOIN
Clientes ON Clientes.CodAut_Cli = Contratos.CodCli_Con
en lugar de:
...
FROM
Contratos
LEFT OUTER JOIN
Clientes LEFT OUTER JOIN TelefonosCli
ON TelefonosCli.CodCli_TelCli = Clientes.CodAut_Cli
ON Clientes.CodAut_Cli = Contratos.CodCli_Con
En fin...
No veas el lio y el curro combinacinal que tengo.