Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

@@ ROWCOUNT - Nhận số lượng hàng bị ảnh hưởng bởi câu lệnh cuối cùng trong SQL Server

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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chuyển một biến null sang một Thủ tục được Lưu trữ trong SQL từ mã C # .net

  2. Khi nguyên tắc DRY không áp dụng:Các hoạt động BITWISE trong SQL Server

  3. Sử dụng sp_help_schedule trong SQL Server

  4. Có thể xóa khỏi nhiều bảng trong cùng một câu lệnh SQL không?

  5. Mẹo sử dụng SQL Server với Salesforce SOQL