Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да получите брой редове, вмъкнати от транзакция

@@ROWCOUNT ще даде броя на редовете, засегнати от последния SQL израз, най-добре е да го запишете в локална променлива след въпросната команда, тъй като стойността му ще се промени следващия път, когато го погледнете:

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]

ИЗХОД:

(2 row(s) affected)
Rows        ROWCOUNT
----------- -----------
2           1

(1 row(s) affected)

получавате Rows стойност 2, броят на вмъкнатите редове, но ROWCOUNT е 1, защото SELECT @[email protected]@ROWCOUNT командата засегна 1 ред

ако имате множество INSERTs или UPDATEs и т.н. във вашата транзакция, трябва да определите как искате да „броите“ какво се случва. Можете да имате отделна обща сума за всяка таблица, една обща обща стойност или нещо съвсем различно. Ще трябва да ДЕКЛАРИРАТЕ променлива за всяка сума, която искате да проследите, и да добавите към нея след всяка операция, която се прилага към нея:

--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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Как да извикам дефинирана от потребителя функция (UDF) на свързан сървър?

  2. Вземете записите от миналия месец в SQL сървър

  3. Запазване на промените след редактиране на таблицата в SQL Server Management Studio

  4. Как да получите стойност на предишен и текущ ред с помощта на рекурсивен CTE?

  5. Много сложен проблем със SQL заявка