@@ROWCOUNT (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance

最後のステートメントの影響を受けた行数を返します。 行の数が 20億を超える場合は、次のようを使用して ROWCOUNT_BIGです。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

@@ROWCOUNT  

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

戻り値の型

int

解説

Transact-SQL ステートメントでは、次の方法で @@ROWCOUNT に値を設定できます。

  • @@ROWCOUNT に、影響を受ける行または読み取られる行の数を設定します。 行はクライアントに送信される場合と、送信されない場合があります。

  • 前にステートメントを実行したときの @@ROWCOUNT を保存します。

  • @@ROWCOUNT を 0 にリセットしますが、クライアントにはその値を返しません。

単純な割り当てを行うステートメントの場合、@@ROWCOUNT の値は常に 1 に設定されます。 行はクライアントに送信されません。 ステートメントの例は次のとおりです。SET @local_variable、RETURN、READTEXT、および SELECT GETDATE() または ' 一般的なテキスト' などのクエリのない SELECT ステートメント。

クエリ内で代入操作をするステートメントまたはクエリ内で RETURN を使用するステートメントは、クエリの影響を受ける行またはクエリに読み取られる行の数を @@ROWCOUNT 値に設定します (例: SELECT @local_variable = c1 FROM t1)。

データ操作言語 (DML) ステートメントは、@@ROWCOUNT 値に、クエリに影響を受ける行の数を設定し、この値をクライアントに返します。 DML ステートメントは、クライアントに行を送信しない場合もあります。

DECLARE CURSOR および FETCH は、@@ROWCOUNT 値に 1 を設定します。

EXECUTE ステートメントは、前の @@ROWCOUNT を保存します。

USE、SET <option>、DEALLOCATE CURSOR、CLOSE CURSOR、PRINT、RAISERROR、BEGIN TRANSACTION、COMMIT TRANSACTION などのステートメントによって、ROWCOUNT 値は 0 にリセットされます。

ネイティブ コンパイル ストアド プロシージャでは、直前の @@ROWCOUNT が維持されます。 ネイティブ コンパイル ストアド プロシージャ内の Transact-SQL ステートメントでは、@@ROWCOUNT は設定しないでください。 詳細については、次を参照してください。 ネイティブ コンパイル ストアド プロシージャです。

次の例では、UPDATE ステートメントを実行し、@@ROWCOUNT を使用して、変更された行があるかどうかを調べます。

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

参照

システム関数 (Transact-SQL)
SET ROWCOUNT (Transact-SQL)