2012-05-28 10 views

Respuesta

23

Puede usar sp_executesql con un parámetro output para recuperar el resultado escalar.

DECLARE @query as nvarchar(200), @count int; 
SET @query = N'SELECT @count = COUNT(*) FROM table'; 

EXEC sp_executesql @query, 
        N'@count int OUTPUT', 
        @count = @count OUTPUT 

SELECT @count AS [@count] 
+0

Gracias, no estoy seguro si entiendo el código correctamente, ¿asigna el resultado de la consulta en la variable de conteo, por OUTPUT? – Malyo

+1

@Malyo - Declara una variable '@ count' en el ámbito externo. Esto se pasa como un parámetro de salida en la llamada 'sp_executesql', lo que significa que la asignación al parámetro de salida se propaga a esa variable. Consulte [Conceptos básicos de TSQL II - Semántica de paso de parámetros] (http://blogs.msdn.com/b/sqlprogrammability/archive/2006/06/09/624531.aspx) para obtener más información sobre los parámetros 'OUTPUT'. –

9

Puede hacerlo de esta manera:

exec (@query) 

o, preferiblemente, como esto:

execute sp_executesql @query 

Para obtener más información, consulta this MSDN article.

Cuestiones relacionadas