2009-02-19 23 views
11

Tengo un procedimiento almacenado que devuelve ID, Nombre, Descripciones y no toma ningún parámetro de entrada. Sin embargo, estoy interesado en cuántos resultados obtengo.Resultados de recuento del procedimiento almacenado

Me esperaba algo así como este trabajo:

SELECT COUNT(*) FROM EXEC MyStoredProcedure 

pero me da el siguiente error en SqlServer Gestión del Estudio: sintaxis incorrecta cerca de la palabra clave 'EXEC'. ¿Podría mostrarme un pequeño ejemplo de código, cómo puedo hacer eso?

Respuesta

18

Esto no funcionará. ¿Puedo sugerir:

exec MyStoredProcedure 
select @@rowcount 

alternativa usted puede devolver el recuento como un parámetro de salida

+0

lo que si se han establecido NOCOUNT en ON? ¿Esto todavía funcionará? – user29964

+1

lo siento mal: http://msdn.microsoft.com/en-us/library/ms189837.aspx. @@ ROWCOUNT sigue trabajando – user29964

+0

Me acabas de ahorrar un par de horas. ¡Gracias! –

-3

Escriba un nuevo procedimiento almacenado que haga un recuento para usted.

3

Es necesario poner la lógica en el procedimiento almacenado y volver a contar desde el procedimiento almacenado. Para ello, utilice la variable @@ ROWCOUNT inmediatamente después de su consulta. Esto me parece que funcionaría en MS SQL Servet al menos.

proc almacenado:

CREATE PROC MyPROC 
AS 
DECLARE @MyCount int 

... 

SELECT * FROM MyTable WHERE ... 

SELECT @MyCount = @@ROWCOUNT 

... 

return @MyCOunt 

Código de llamada:

DECLARE @MyCount int 

EXEC @MyCount = EXEC MyProc 
+0

bien, esto funcionará pero también puede usar SELECT COUNT (*) FROM Table. Creo que todavía quiere sus datos ... si no debería usar COUNT ... – user29964

Cuestiones relacionadas