Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

@@ROWCOUNT – Вземете броя на редовете, засегнати от последното изявление в SQL Server

В SQL Server можете да използвате @@ROWCOUNT системна функция за връщане на броя на редовете, засегнати от последния израз на T-SQL.

Например, ако една заявка върне 4 реда, @@ROWCOUNT ще върне 4.

Пример 1 – Избиране на данни

Ето основен пример, за да демонстрирате как работи.

SELECT * FROM Dogs;
SELECT @@ROWCOUNT;

Резултат:

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

В този случай моят SELECT оператор върна 3 реда и така @@ROWCOUNT върна 3.

Пример 2 – Актуализиране на данни

Ето пример за използване на @@ROWCOUNT с UPDATE оператор, за да проверите дали някои редове са актуализирани.

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

Резултат:

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

В този случай не бяха актуализирани редове, тъй като DogId не съществуваше в таблицата. Успяхме да използваме @@ROWCOUNT с IF изявление, за да върне подходящо съобщение на потребителя.

Ето го отново, но този път кучето наистина съществува.

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

Резултат:

(1 row affected)
Your dog will be rewarded accordingly

Изключително голям набор от данни?

Ако смятате, че количеството редове, засегнати от изявление, ще бъде повече от 2 милиарда, използвайте ROWCOUNT_BIG() вместо това.

Можете да го използвате по същия начин като @@ROWCOUNT се използва.

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

Резултат:

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

Когато @@ROWCOUNT е Нулиране

Изявления като USE , SET <option> , DEALLOCATE CURSOR , CLOSE CURSOR , PRINT , RAISERROR , BEGIN TRANSACTION , или COMMIT TRANSACTION нулирайте @@ROWCOUNT стойност до 0 .

Изпълнява се SELECT @@ROWCOUNT сам по себе си също ще върне 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. Какво е SQL Server?

  2. 5 предимства на проактивното наблюдение на ефективността на базата данни

  3. MSSQL Грешка „Основният доставчик се провали при отваряне“

  4. Как да изберете последния запис на таблица в SQL?

  5. Използване на merge..output за получаване на съпоставяне между source.id и target.id