bueno, si lo haces en .net
una de las propiedades de la conexion te permite llamar sp y sus respectivos parametros.
si no es así.
te recomiendo que envies en la sentencia el exec del sp y todos los parametros de manera que quede algo asi
exec sp_mi_store_procedure (@parametro1,@parametro2,@parametro3)
cada parametro, llenalo con el dato base de la consulta.
de manera que en el sp, puedes utilizar una macro para llenar una cadena dependiendo de lo que le llegue.
algo asi:
if not @parametro1 is null then
@variable1 = "los joins de tus tablas " o campo1 = @parametro 1
end if
y asi sucesivamente.
por ultimo retornas una matriz que o llenas otra tabla y esa la referencias en la aplicacion para que te tome los datos.
tambien puedes utilizar un tipo de mantenimiento,
en el cual puedas decir:
si es consulta 1 entonces mantenimiento =1
si es consulta 2 entonces mantenimiento =2
y este valor le envias como parametro al sp y en este programas la macro de acuerdo al tipo.