W programie SQL Server 2005 istnieje sposób usuwania wierszy i informowania o liczbie usuniętych faktycznie?Zliczanie liczby usuniętych wierszy w procedurze przechowywanej programu SQL Server
Mogę zrobić select count(*)
w tych samych warunkach, ale muszę to być całkowicie godne zaufania.
Moim pierwszym domysłem było użycie zmiennych @@ROWCOUNT
- ale to nie jest ustawione, np.
delete
from mytable
where datefield = '5-Oct-2008'
select @@ROWCOUNT
zawsze zwraca 0.
MSDN proponuje konstrukcję OUTPUT
, np
delete from mytable
where datefield = '5-Oct-2008'
output datefield into #doomed
select count(*)
from #doomed
to faktycznie kończy się niepowodzeniem z błędem składni.
Wszelkie pomysły?
Myślałem, że próbowałem tego - ale najwyraźniej nie miałem, ponieważ działało jak urok - dzięki. – Unsliced
MSDN wydaje się mówić SET NOCOUNT wpływa na wydruk. Dlaczego ma to wpływ na '@@ ROWCOUNT'? Czy nie powinien zawsze zwracać liczby usuniętych wierszy (w PO)? – noelicus
*** To przypuszczenie *** Myślę, że to dlatego, że ustawienie NOCOUNT na mówi systemowi, że nie musi śledzić liczników, aby poprawić wydajność. – wcm