Trong SQL Server, bạn có thể sử dụng @@ROWCOUNT hàm hệ thống để trả về số hàng bị ảnh hưởng bởi câu lệnh T-SQL cuối cùng.
Ví dụ:nếu truy vấn trả về 4 hàng, @@ROWCOUNT sẽ trả về 4.
Ví dụ 1 - Chọn dữ liệu
Dưới đây là một ví dụ cơ bản để chứng minh cách hoạt động của nó.
SELECT * FROM Dogs;
SELECT @@ROWCOUNT; Kết quả:
+---------+-----------+-----------+ | DogId | DogName | GoodDog | |---------+-----------+-----------| | 1 | Fetch | 0 | | 2 | Fluffy | 0 | | 3 | Wag | 0 | +---------+-----------+-----------+ (3 rows affected) +--------------------+ | (No column name) | |--------------------| | 3 | +--------------------+ (1 row affected)
Trong trường hợp này, SELECT của tôi câu lệnh trả về 3 hàng và vì vậy @@ROWCOUNT trả lại 3.
Ví dụ 2 - Cập nhật dữ liệu
Dưới đây là ví dụ về việc sử dụng @@ROWCOUNT với một UPDATE để kiểm tra xem có hàng nào được cập nhật hay không.
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 Kết quả:
(0 rows affected) A dog outside the system cannot be a good dog
Trong trường hợp này, không có hàng nào được cập nhật vì DogId không tồn tại trong bảng. Chúng tôi có thể sử dụng @@ROWCOUNT với IF để trả về một thông báo thích hợp cho người dùng.
Đây một lần nữa, nhưng lần này con chó tồn tại.
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 Kết quả:
(1 row affected) Your dog will be rewarded accordingly
Tập dữ liệu cực lớn?
Nếu bạn cho rằng số lượng hàng bị ảnh hưởng bởi một câu lệnh sẽ nhiều hơn 2 tỷ, hãy sử dụng ROWCOUNT_BIG() thay vào đó.
Bạn có thể sử dụng nó theo cách giống như @@ROWCOUNT được sử dụng.
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 Kết quả:
(0 rows affected) A dog outside the system cannot be a good dog
Khi @@ROWCOUNT là Đặt lại
Các câu lệnh như USE , SET <option> , DEALLOCATE CURSOR , CLOSE CURSOR , PRINT , RAISERROR , BEGIN TRANSACTION hoặc COMMIT TRANSACTION đặt lại @@ROWCOUNT giá trị thành 0 .
Đang chạy S ELECT @@ROWCOUNT tự nó cũng sẽ trả về 0 .