sql >> Database >  >> RDS >> Sqlserver

Hoe het aantal rijen te krijgen dat door een transactie is ingevoegd?

@@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


  1. Kan niet inloggen op database als SYS met Oracle SQL Developer

  2. Hoe snel 13 recordlijnen in de buurt van een punt (lon, lat) te krijgen postgis

  3. Django Postgres ArrayField-aggregatie en filtering

  4. PostGIS-fout:kon geen functie voor beste kandidaat kiezen