@@ROWCOUNT (Transact-SQL)

適用于:SQL Server (所有支援的版本) Azure SQL Database Azure SQL 受控執行個體

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

主題連結圖示Transact-SQL 語法慣例

Syntax

@@ROWCOUNT  

注意

若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件

傳回型別

int

備註

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

  • 將 @@ROWCOUNT 設為被影響或讀取的資料列數。 資料列不一定會傳送到用戶端。

  • 保留來自前一個陳述式執行的 @@ROWCOUNT。

  • 將 @@ROWCOUNT 重設為 0,但不將該值傳回用戶端。

進行簡單指派的陳述式一律會將 @@ROWCOUNT 值設為 1。 它不會傳送任何資料列給用戶端。 這些語句的範例包括:SET @local_variable、RETURN、READTEXT,以及不含查詢語句的選取,例如 SELECT GETDATE () 或 SELECT 'Generic Text'

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

資料操作語言 (DML) 陳述式會將 @@ROWCOUNT 值設為受該查詢影響的資料列數,並且將該值傳回給用戶端。 DML 陳述式可能不會傳送任何資料列給用戶端。

DECLARE CURSOR 和 FETCH 會將 @@ROWCOUNT 值設為 1。

EXECUTE 陳述式會保留前一個 @@ROWCOUNT。

USE、SET < 選項 > 、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)