Gibt es in SQL Server 2005 eine Möglichkeit zum Löschen von Zeilen und die Angabe, wie viele tatsächlich gelöscht wurden?Zählen der Anzahl gelöschter Zeilen in einer gespeicherten SQL Server-Prozedur
Ich könnte eine select count(*)
mit den gleichen Bedingungen tun, aber ich muss das absolut vertrauenswürdig sein.
Meine erste Schätzung war die @@ROWCOUNT
Variablen zu verwenden - aber das ist nicht festgelegt, z.
delete
from mytable
where datefield = '5-Oct-2008'
select @@ROWCOUNT
liefert immer eine 0
MSDN schlägt die OUTPUT
Konstruktion, z.B.
delete from mytable
where datefield = '5-Oct-2008'
output datefield into #doomed
select count(*)
from #doomed
Dies schlägt tatsächlich mit einem Syntaxfehler fehl.
Irgendwelche Ideen?
Ich hatte gedacht, dass ich das versucht habe - aber anscheinend hatte ich nicht, weil es wie ein Zauber wirkte - danke. – Unsliced
MSDN scheint zu sagen, dass SET NOCOUNT den Ausdruck auswirkt. Warum beeinflusst dies den '@@ ROWCOUNT'? Sollte es nicht immer die Anzahl der gelöschten Zeilen (im OP) zurückgeben? – noelicus
*** Das ist Vermutung *** Ich denke es ist, weil die Einstellung von NOCOUNT dem System mitteilt, dass es die Zählungen nicht verfolgen muss, um die Dinge effizienter zu machen. – wcm