@@ROWCOUNT akan memberikan jumlah baris yang terpengaruh oleh terakhir Pernyataan SQL, yang terbaik adalah menangkapnya ke dalam variabel lokal mengikuti perintah yang dimaksud, karena nilainya akan berubah saat Anda melihatnya lagi:
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]
KELUARAN:
(2 row(s) affected)
Rows ROWCOUNT
----------- -----------
2 1
(1 row(s) affected)
Anda mendapatkan Rows
nilai 2, jumlah baris yang disisipkan, tetapi ROWCOUNT adalah 1 karena SELECT @[email protected]@ROWCOUNT
perintah terpengaruh 1 baris
jika Anda memiliki beberapa INSERT atau UPDATE, dll. dalam transaksi Anda, Anda perlu menentukan bagaimana Anda ingin "menghitung" apa yang sedang terjadi. Anda dapat memiliki total terpisah untuk setiap tabel, satu nilai total keseluruhan, atau sesuatu yang sama sekali berbeda. Anda harus MENYATAKAN variabel untuk setiap total yang ingin Anda lacak dan tambahkan ke dalamnya setelah setiap operasi yang berlaku untuknya:
--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