En SQL Server 2005, ¿hay alguna forma de eliminar filas y saber cuántas se borraron realmente ?Contando el número de filas eliminadas en un procedimiento almacenado de SQL Server
Podría hacer un select count(*)
con las mismas condiciones, pero necesito que esto sea completamente confiable.
Mi primera suposición fue utilizar las variables @@ROWCOUNT
, pero eso no está configurado, p.
delete
from mytable
where datefield = '5-Oct-2008'
select @@ROWCOUNT
siempre devuelve un 0.
MSDN sugiere la construcción OUTPUT
, por ejemplo
delete from mytable
where datefield = '5-Oct-2008'
output datefield into #doomed
select count(*)
from #doomed
esto realmente falla con un error de sintaxis.
¿Alguna idea?
Pensé que había intentado esto, pero aparentemente no lo había hecho porque funcionaba como un amuleto, gracias. – Unsliced
MSDN parece decir que SET NOCOUNT afecta la impresión. ¿Por qué esto afecta a '@@ ROWCOUNT'? ¿No debería devolver siempre el número de filas eliminadas (en el OP)? – noelicus
*** Esta es una conjetura *** Creo que es porque al configurar NOCOUNT le dice al sistema que no tiene que hacer un seguimiento de los recuentos para hacer las cosas más eficientes – wcm