@@ROWCOUNT (Transact-SQL)@@ROWCOUNT (Transact-SQL)

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

最後のステートメントの影響を受けた行数を返します。Returns the number of rows affected by the last statement. 行の数が 20億を超える場合は、次のようを使用して ROWCOUNT_BIGです。If the number of rows is more than 2 billion, use ROWCOUNT_BIG.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

@@ROWCOUNT  

戻り値の型Return Types

intint

RemarksRemarks

Transact-SQLTransact-SQL ステートメントでは、次の方法で @@ROWCOUNT に値を設定できます。statements can set the value in @@ROWCOUNT in the following ways:

  • @@ROWCOUNT に、影響を受ける行または読み取られる行の数を設定します。Set @@ROWCOUNT to the number of rows affected or read. 行はクライアントに送信される場合と、送信されない場合があります。Rows may or may not be sent to the client.

  • 前にステートメントを実行したときの @@ROWCOUNT を保存します。Preserve @@ROWCOUNT from the previous statement execution.

  • @@ROWCOUNT を 0 にリセットしますが、クライアントにはその値を返しません。Reset @@ROWCOUNT to 0 but do not return the value to the client.

単純な割り当てを行うステートメントの場合、@@ROWCOUNT の値は常に 1 に設定されます。Statements that make a simple assignment always set the @@ROWCOUNT value to 1. 行はクライアントに送信されません。No rows are sent to the client. ステートメントの例は次のとおりです。SET @local_variable、RETURN、READTEXT、および SELECT GETDATE() または SELECT '一般的なテキスト' などのクエリのない SELECT ステートメント。Examples of these statements are: SET @local_variable, RETURN, READTEXT, and select without query statements such as SELECT GETDATE() or SELECT 'Generic Text'.

クエリ内で代入操作をするステートメントまたはクエリ内で RETURN を使用するステートメントは、クエリの影響を受ける行またはクエリに読み取られる行の数を @@ROWCOUNT 値に設定します (例: SELECT @local_variable = c1 FROM t1)。Statements that make an assignment in a query or use RETURN in a query set the @@ROWCOUNT value to the number of rows affected or read by the query, for example: SELECT @local_variable = c1 FROM t1.

データ操作言語 (DML) ステートメントは、@@ROWCOUNT 値に、クエリに影響を受ける行の数を設定し、この値をクライアントに返します。Data manipulation language (DML) statements set the @@ROWCOUNT value to the number of rows affected by the query and return that value to the client. DML ステートメントは、クライアントに行を送信しない場合もあります。The DML statements may not send any rows to the client.

DECLARE CURSOR および FETCH は、@@ROWCOUNT 値に 1 を設定します。DECLARE CURSOR and FETCH set the @@ROWCOUNT value to 1.

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

USE、SET <option>、DEALLOCATE CURSOR、CLOSE CURSOR、PRINT、RAISERROR、BEGIN TRANSACTION、COMMIT TRANSACTION などのステートメントは、ROWCOUNT 値を 0 にリセットします。Statements such as USE, SET <option>, DEALLOCATE CURSOR, CLOSE CURSOR, PRINT, RAISERROR, BEGIN TRANSACTION, or COMMIT TRANSACTION reset the ROWCOUNT value to 0.

ネイティブ コンパイル ストアド プロシージャでは、直前の @@ROWCOUNT が維持されます。Natively compiled stored procedures preserve the previous @@ROWCOUNT. ネイティブ コンパイル ストアド プロシージャ内の Transact-SQLTransact-SQL ステートメントでは、@@ROWCOUNT は設定しないでください。Transact-SQLTransact-SQL statements inside natively compiled stored procedures do not set @@ROWCOUNT. 詳細については、次を参照してください。 ネイティブ コンパイル ストアド プロシージャです。For more information, see Natively Compiled Stored Procedures.

使用例Examples

次の例では、UPDATE ステートメントを実行し、@@ROWCOUNT を使用して、変更された行があるかどうかを調べます。The following example executes an UPDATE statement and uses @@ROWCOUNT to detect if any rows were changed.

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

参照See Also

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