@@ROWCOUNT geeft het aantal rijen dat wordt beïnvloed door de laatste SQL-instructie, is het het beste om het in een lokale variabele vast te leggen door het betreffende commando te volgen, omdat de waarde ervan de volgende keer dat je ernaar kijkt zal veranderen:
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]
UITGANG:
(2 row(s) affected)
Rows ROWCOUNT
----------- -----------
2 1
(1 row(s) affected)
je krijgt Rows
waarde van 2, het aantal ingevoegde rijen, maar ROWCOUNT is 1 omdat de SELECT @[email protected]@ROWCOUNT
commando beïnvloed 1 rij
als u meerdere INSERT's of UPDATE's, enz. in uw transactie heeft, moet u bepalen hoe u wilt "tellen" wat er aan de hand is. U kunt voor elke tafel een afzonderlijk totaal hebben, een enkele totaalwaarde of iets heel anders. U moet een variabele VERKLAREN voor elk totaal dat u wilt bijhouden en hieraan toevoegen na elke bewerking die erop van toepassing is:
--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