LinkWykonanie jeśli @@ rowcount> 0 resetuje @@ rowcount do 0. Dlaczego?
@@ rowCount służy do informowania liczbę wierszy dotkniętych przez ostatni SELECT, INSERT, aktualizacji lub usuwania wypowiedzi
declare @row int select 100 if @@rowcount>0 set @[email protected]@rowcount ...
Powyższy zwróci 0, ponieważ jak najszybciej
if @@rowcount>0
jest wykonywane zostaje zresetowane do 0, ponieważ nie zwraca żadnych wierszy. Więc zawsze przypisać do zmienna pierwszy
Dlaczego oświadczenie if @@rowcount>0
zresetować @@rowcount
do 0? Czy wartość @@rowcount
nie ma wpływu tylko na polecenia select, insert, update i delete?
dziękuję
1 - O ile rozumiem, powodem, dla którego @@ rowcount zwrócił 1, a nie 0, jest zapytanie "SELECT @row, @@ rowcount" dotyczące jednego wiersza. Ale myślałem, że termin "liczba dotkniętych wierszy" był używany, gdy instrukcja sql zajmowała się rzeczywistymi wierszami w tabelach DB, ale twoja instrukcja select nie ma dostępu do żadnych wierszy, więc dlaczego @@ rowcount zwraca 1? – user702769
2 - Mam nadzieję, że to pytanie ma jakiś sens - jeśli mielibyśmy uderzyć nosem, czy @@ rowcount nie zwróci liczby wierszy JUŻ dotkniętych przez instrukcję select? Jeśli tak, to "SELECT @row, @@ rowcount" powinno zwrócić 0 dla @@ rowcount, ponieważ instrukcja select nie jest jeszcze w pełni ukończona w momencie pobierania wartości z @ rowcount, a jako takie nie wpłynęły żadne wiersze jeszcze?! – user702769
@ user702769: Poziom @@ rowcount w 'SELECT @row, @@ rowcount' jest zależny od' set @row = @@ rowcount; 'powyżej. SELECT nie może odczytać własnego @@ rowcount – gbn