@@ ROWCOUNT sẽ cung cấp số hàng bị ảnh hưởng bởi cuối cùng Câu lệnh SQL, tốt nhất là nắm bắt nó thành một biến cục bộ sau lệnh được đề cập, vì giá trị của nó sẽ thay đổi vào lần tiếp theo bạn nhìn vào nó:
DECLARE @Rows int
DECLARE @TestTable table (col1 int, col2 int)
INSERT INTO @TestTable (col1, col2) select 1,2 union select 3,4
SELECT @[email protected]@ROWCOUNT
SELECT @Rows AS Rows,@@ROWCOUNT AS [ROWCOUNT]
ĐẦU RA:
(2 row(s) affected)
Rows ROWCOUNT
----------- -----------
2 1
(1 row(s) affected)
bạn nhận được Rows
giá trị là 2, số hàng được chèn, nhưng ROWCOUNT là 1 vì SELECT @[email protected]@ROWCOUNT
lệnh bị ảnh hưởng 1 hàng
nếu bạn có nhiều CHÈN hoặc CẬP NHẬT, v.v. trong giao dịch của mình, bạn cần xác định cách bạn muốn "đếm" những gì đang diễn ra. Bạn có thể có một tổng riêng cho mỗi bảng, một tổng giá trị lớn duy nhất hoặc một cái gì đó hoàn toàn khác. Bạn sẽ cần KHAI BÁO một biến cho mỗi tổng số bạn muốn theo dõi và thêm vào đó sau mỗi thao tác áp dụng cho nó:
--note there is no error handling here, as this is a simple example
DECLARE @AppleTotal int
DECLARE @PeachTotal int
SELECT @AppleTotal=0,@PeachTotal=0
BEGIN TRANSACTION
INSERT INTO Apple (col1, col2) Select col1,col2 from xyz where ...
SET @[email protected][email protected]@ROWCOUNT
INSERT INTO Apple (col1, col2) Select col1,col2 from abc where ...
SET @[email protected][email protected]@ROWCOUNT
INSERT INTO Peach (col1, col2) Select col1,col2 from xyz where ...
SET @[email protected][email protected]@ROWCOUNT
INSERT INTO Peach (col1, col2) Select col1,col2 from abc where ...
SET @[email protected][email protected]@ROWCOUNT
COMMIT
SELECT @AppleTotal AS AppleTotal, @PeachTotal AS PeachTotal