Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak uzyskać liczbę wierszy wstawionych przez transakcję?

@@ROWCOUNT poda liczbę wierszy, na które ma wpływ ostatni SQL, najlepiej jest przechwycić ją do zmiennej lokalnej następującej po poleceniu, o którym mowa, ponieważ jej wartość zmieni się następnym razem, gdy na nią spojrzysz:

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]

WYJŚCIE:

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

(1 row(s) affected)

otrzymasz Rows wartość 2, liczba wstawionych wierszy, ale ROWCOUNT wynosi 1, ponieważ SELECT @[email protected]@ROWCOUNT polecenie dotyczy 1 wiersza

jeśli masz wiele WSTAWEK lub AKTUALIZACJI itp. w swojej transakcji, musisz określić, w jaki sposób chcesz „liczyć” to, co się dzieje. Możesz mieć osobną sumę dla każdej tabeli, pojedynczą sumę całkowitą lub coś zupełnie innego. Musisz ZADEKLAROWAĆ zmienną dla każdej sumy, którą chcesz śledzić i dodać do niej po każdej operacji, która ma do niej zastosowanie:

--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. Jak przekonwertować String na Hex i odwrotnie?

  2. Jak sprawdzić poziom zgodności bazy danych w SQL Server za pomocą T-SQL

  3. SSIS z arkuszami Excel

  4. Jak mogę ogólnie posortować kolumnę „Numer wersji” za pomocą zapytania SQL Server?

  5. ZESTAWY GRUPOWANIA T-SQL COALESCE w jednej kolumnie bez duplikatów NULL