В 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
.