共用方式為


@@ROWCOUNT (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

傳回受到前一個陳述式所影響的資料列數。 如果資料列的數目超過 20 億,請使用 ROWCOUNT_BIG

Transact-SQL 語法慣例

Syntax

@@ROWCOUNT

注意

若要檢視 SQL Server 2014 (12.x) 和更早版本的 Transact-SQL 語法,請參閱舊版文件

傳回類型

int

備註

Transact-SQL 語句可以透過下列方式設定值 @@ROWCOUNT

  • 設定 @@ROWCOUNT 為受影響的或讀取的數據列數目。 數據列可能會或可能不會傳送至用戶端。
  • 保留 @@ROWCOUNT 先前的語句執行。
  • 重設為 @@ROWCOUNT 0,但不會將值傳回給用戶端。

讓簡單指派的語句一律會將 @@ROWCOUNT 值設定為 1。 它不會傳送任何資料列給用戶端。 這些語句的範例包括: SET @local_variableRETURNREADTEXT和 select,而不需查詢語句,例如 SELECT GETDATE()SELECT '<Generic Text>'

在查詢中進行指派或使用 RETURN 的語句,會將 @@ROWCOUNT 值設定為查詢所影響或讀取的數據列數目,例如: SELECT @local_variable = c1 FROM t1

數據操作語言 (DML) 語句會將 @@ROWCOUNT 值設定為受查詢影響的數據列數目,並將該值傳回給用戶端。 DML 語句可能不會將任何數據列傳送至用戶端。

DECLARE CURSORFETCH 值設定 @@ROWCOUNT1

EXECUTE 語句會保留前一個 @@ROWCOUNT

USESET <option>、、、CLOSE CURSORDEALLOCATE CURSORRAISERRORPRINTBEGIN TRANSACTION或 等COMMIT TRANSACTION語句會將ROWCOUNT0重設為 。

原生編譯的預存程式會保留先前 @@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