Es raro ese uso, pero supongo que es solo un ejemplo..
de cualquier forma lo mejor es ejecutar codigo dinamico a traves del sp sp_executesql, ya que acepta parametros de entrada y salida y ademas se almacena el plan de ejecucion del query solicitado.
este seria un ejemplo de uso..
Código:
DECLARE @nquery NVARCHAR(4000)
,@nParams NVARCHAR(4000)
DECLARE @n1 INT, @n2 INT, @res INT
SET @N1=1
SET @N2=2
SET @res = 0
SET @nParams = '@n1 INT, @n2 INT, @res INT OUTPUT'
SET @nquery = ' EXECUTE [dbo].[SP_PRUEBA_SUMA] @N1,@N2, @RES OUTPUT'
EXECUTE sp_executesql @nQuery, @nParams
,@n1 = @N1
,@n2 = @N2
,@RES = @RES OUTPUT
SELECT @RES
--
Ahora que si de plano no se puede cambiar el query dinamico.. este seria un ejemplo que compila y regresa el resultado como un resultset...
Código:
DECLARE @n1 INT, @n2 INT
DECLARE @query VARCHAR(4000)
SET @N1=1
SET @N2=2
SET @query = 'DECLARE @res INT EXECUTE [dbo].[SP_PRUEBA_SUMA] '
+ CAST(@N1 AS VARCHAR) +',' + CAST(@N2 AS VARCHAR)
+', @RES OUTPUT SELECT @RES'
EXECUTE (@query)
Saludos!