Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

@@ROWCOUNT — Uzyskaj liczbę wierszy, których dotyczy ostatnia instrukcja w SQL Server

W SQL Server możesz użyć @@ROWCOUNT funkcja systemowa do zwrócenia liczby wierszy, na które miała wpływ ostatnia instrukcja T-SQL.

Na przykład, jeśli zapytanie zwraca 4 wiersze, @@ROWCOUNT zwróci 4.

Przykład 1 – Wybór danych

Oto podstawowy przykład pokazujący, jak to działa.

SELECT * FROM Dogs;
SELECT @@ROWCOUNT;

Wynik:

+---------+-----------+-----------+
| DogId   | DogName   | GoodDog   |
|---------+-----------+-----------|
| 1       | Fetch     | 0         |
| 2       | Fluffy    | 0         |
| 3       | Wag       | 0         |
+---------+-----------+-----------+
(3 rows affected)
+--------------------+
| (No column name)   |
|--------------------|
| 3                  |
+--------------------+
(1 row affected)

W tym przypadku mój SELECT instrukcja zwróciła 3 wiersze, więc @@ROWCOUNT zwrócono 3.

Przykład 2 – Aktualizacja danych

Oto przykład użycia @@ROWCOUNT z UPDATE oświadczenie, aby sprawdzić, czy jakiekolwiek wiersze zostały zaktualizowane.

UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO

Wynik:

(0 rows affected)
A dog outside the system cannot be a good dog

W tym przypadku żadne wiersze nie zostały zaktualizowane, ponieważ identyfikator DogId nie istniał w tabeli. Udało nam się użyć @@ROWCOUNT z IF oświadczenie, aby zwrócić użytkownikowi odpowiednią wiadomość.

I znowu, ale tym razem pies istnieje.

UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 1
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO

Wynik:

(1 row affected)
Your dog will be rewarded accordingly

Bardzo duży zbiór danych?

Jeśli uważasz, że liczba wierszy, których dotyczy instrukcja, będzie większa niż 2 miliardy, użyj ROWCOUNT_BIG() zamiast tego.

Możesz go używać w taki sam sposób, jak @@ROWCOUNT jest używany.

UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF ROWCOUNT_BIG() > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO

Wynik:

(0 rows affected)
A dog outside the system cannot be a good dog

Kiedy @@ROWCOUNT jest zresetowany

Instrukcje takie jak USE , USTAW , COFNIJ PRZYDZIELENIE KURSORA , ZAMKNIJ KURSORA , DRUKUJ , RAISERROR , ROZPOCZNIJ TRANSAKCJĘ lub POTWIERDZENIE TRANSAKCJI zresetuj @@ROWCOUNT wartość do 0 .

Uruchamianie SELECT @@ROWCOUNT sam zwróci również 0 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Łatwe przywracanie bazy danych SQL — przewodnik krok po kroku

  2. Jak wykonać wyzwalacz tylko po zaktualizowaniu określonej kolumny (SQL Server)

  3. SQL Server:Filtruj dane wyjściowe sp_who2

  4. Jak sprawdzić, czy ciąg jest unikalnym identyfikatorem?

  5. Jak możesz nazwać tabele zestawu danych, które zwracasz w przechowywanej procedurze?