Puedes pasar un parametro como si fuera un string (varchar)... Lo que pasa es que el procedimiento que reciba este dato tendrá que tener un exec para ejecutar la acción...
Ejemplificando:
Paso un parametro que es un varchar(20)
Código SQL
[-]
declare @sql varchar (1000)
set @sql='pepe '+char(34)+@nombre_tabla+char(34)
exec (@sql)
La instrucción de arriba, llamará al siguiente procedimiento...
Código SQL
[-]
Create procedure pepe
@tabla varchar(20)
As
declare @sql varchar (1000)
set @sql='insert into '+@tabla+' campo1, campo2, campo3'
set @sql=@sql + ' values valor1, '+@numero+', '+char(34)+getdate()+char(34)
exec (@sql)
GO
Personalmente no me gusta anidar procedimientos... porque si anidas procedimientos muy complejos, tendras que tener un par de super-procesadores.
Porque?
Cuando haces un procedimiento, al ejecutarse por primera vez, el motor MsSql compilará este procedimiento... Cosa que tambien sucede con el método EXECUTE (EXEC), indistintamente se ejecute 1 vez ó 1000, siempre lo compilará !
Saludos !