sql >> Databáze >  >> RDS >> Sqlserver

Jak získat počet řádků vložených transakcí

@@ROWCOUNT udává počet řádků ovlivněných posledním SQL, je nejlepší jej zachytit do lokální proměnné následující za daným příkazem, protože jeho hodnota se změní, až se na něj příště podíváte:

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]

VÝSTUP:

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

(1 row(s) affected)

získáte Rows hodnota 2, počet vložených řádků, ale ROWCOUNT je 1, protože SELECT @[email protected]@ROWCOUNT příkaz ovlivnil 1 řádek

pokud máte v transakci více INSERTů nebo AKTUALIZACÍ atd., musíte určit, jak chcete „počítat“, co se děje. Můžete mít samostatný součet pro každou tabulku, jednu celkovou hodnotu nebo něco úplně jiného. Pro každý součet, který chcete sledovat, budete muset DECLARE proměnnou a přidat k ní po každé operaci, která se na ni vztahuje:

--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. Poskytuje nástroj mysql CLI způsob, jak zobrazit binární data způsobem přátelským ke konzole?

  2. PŘÍPAD Mysql PŘI PŘIPOJENÍ Chyba prohlášení

  3. Jak vrátit opravu po neúspěšné fázi přerušení v R12.2

  4. Je možné zacházet s pomlčkami a mezerami stejně v SQL?