@@ROWCOUNT (Transact-SQL)

直前のステートメントの影響を受けた行数を返します。行数が 20 億を超える場合は、ROWCOUNT_BIG を使用します。

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

構文

@@ROWCOUNT

戻り値の型

int

説明

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

  • @@ROWCOUNT に、影響を受ける行または読み取られる行の数を設定します。行はクライアントに送信しても、送信しなくてもかまいません。

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

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

単純な割り当てを行うステートメントの場合、@@ROWCOUNT の値は常に 1 に設定されます。行はクライアントに送信されません。SET @local_variable、RETURN、READTEXT、および SELECT GETDATE() や SELECT 'Generic Text' などのクエリのない 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、BEGIN TRANSACTION、COMMIT TRANSACTION などのステートメントは、ROWCOUNT 値を 0 にリセットします。

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

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