los valores opcionales debes establcerlos con un valor default, es decir:
Código:
create proc sp_miproc
(
@valorrequerido1 as int,
@valoropcional1 as varchar = '',
@valoropcional2 as int = 0,
@valoropcional3 as varchar = null
)
as
/*todo el codigo aca*/
go
cuando mandes llamar a esta funcion simplemente ignora las variables que tiene con default, y tomara el valor que tiene por default, puedes llamarlo por posiciones o por nombre de variables, aunque es mas ordenado por nombre de variables, ya que te permite pasarle los parametros sin necesidad que este en la misma posicion que el parametro formal
Saludos!