Sdílet prostřednictvím


@@ROWCOUNT (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vrátí počet řádků ovlivněných posledním příkazem. Pokud je počet řádků větší než 2 miliardy, použijte ROWCOUNT_BIG.

Transact-SQL konvence syntaxe

Syntaxe

@@ROWCOUNT

Návratové typy

int

Poznámky

Transact-SQL příkazy mohou nastavit hodnotu v @@ROWCOUNT následujícím způsobem:

  • Nastavte @@ROWCOUNT počet ovlivněných nebo přečtených řádků. Řádky můžou být klientovi posílány, ale také nemusí.
  • Uchovávejte @@ROWCOUNT se od předchozího provedení výroku.
  • Resetujte @@ROWCOUNT na 0, ale nevraťte hodnotu klientovi.

Výroky, které vytvářejí jednoduché přiřazení, vždy nastavují @@ROWCOUNT hodnotu na 1. Klientu nejsou posílány žádné řádky. Příklady těchto tvrzení jsou: , , , a select bez dotazových příkazů, SET @local_variablejako je nebo SELECT '<Generic Text>'SELECT GETDATE() . READTEXTRETURN

Příkazy, které přiřadí dotaz nebo použijí RETURN v dotazu, nastavují @@ROWCOUNT hodnotu na počet řádků ovlivněných nebo přečtených dotazem, například: SELECT @local_variable = c1 FROM t1.

Příkazy jazyka pro manipulaci s daty (DML) nastavují @@ROWCOUNT hodnotu na počet řádků ovlivněných dotazem a vrací tuto hodnotu klientovi. DML výpisy nemusí klientovi posílat žádné řádky.

DECLARE CURSOR a FETCH nastavte @@ROWCOUNT hodnotu na 1.

EXECUTE Výroky zachovávají předchozí @@ROWCOUNT.

Výroky jako , , , , , PRINT, RAISERROR, , BEGIN TRANSACTION, nebo COMMIT TRANSACTION resetovat ROWCOUNT hodnotu na 0. CLOSE CURSORDEALLOCATE CURSORSET <option>USE

Nativně kompilované uložené procedury zachovávají předchozí @@ROWCOUNT. Transact-SQL příkazy uvnitř nativně kompilovaných uložených procedur nenastavují @@ROWCOUNT. Další informace naleznete v tématu Nativně zkompilované uložené procedury.

Examples

Následující příklad vykonává UPDATE příkaz a používá @@ROWCOUNT se k detekci, zda byly změněny některé řádky.

USE AdventureWorks2022;
GO
UPDATE HumanResources.Employee
SET JobTitle = N'Executive'
WHERE NationalIDNumber = 123456789
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated';
GO