次の方法で共有


@@ROWCOUNT (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

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

Transact-SQL 構文表記規則

構文

@@ROWCOUNT

Note

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

戻り値の型

int

解説

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

  • @@ROWCOUNTに、影響を受ける行数または読み取り行数を設定します。 クライアントに行が送信される場合と送信されない場合があります。
  • 前のステートメント実行の @@ROWCOUNT を保持します。
  • @@ROWCOUNTを 0 にリセットしますが、クライアントに値を返さないでください。

単純な割り当てを行うステートメントでは、常に @@ROWCOUNT 値が 1に設定されます。 行はクライアントに送信されません。 これらのステートメントの例としては、 SET @local_variableRETURNREADTEXTSELECT GETDATE()SELECT '<Generic Text>'などのクエリ ステートメントを使用しない select があります。

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

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

DECLARE CURSORFETCH@@ROWCOUNT値を1に設定します。

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

USESET <option>DEALLOCATE CURSORCLOSE CURSORPRINTRAISERRORBEGIN TRANSACTIONCOMMIT TRANSACTIONなどのステートメントは、ROWCOUNT値を0にリセットします。

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

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

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