@@ROWCOUNT (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
傳回受到前一個陳述式所影響的資料列數。 如果資料列的數目超過 20 億,請使用 ROWCOUNT_BIG。
語法
@@ROWCOUNT
傳回類型
int
備註
Transact-SQL 語句可以透過下列方式設定值 @@ROWCOUNT
:
- 設定
@@ROWCOUNT
為受影響的或讀取的數據列數目。 數據列可能會或可能不會傳送至用戶端。 - 保留
@@ROWCOUNT
先前的語句執行。 - 重設為
@@ROWCOUNT
0,但不會將值傳回給用戶端。
讓簡單指派的語句一律會將 @@ROWCOUNT
值設定為 1
。 它不會傳送任何資料列給用戶端。 這些語句的範例包括: SET @local_variable
、 RETURN
、 READTEXT
和 select,而不需查詢語句,例如 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 <option>
、、、CLOSE CURSOR
DEALLOCATE CURSOR
RAISERROR
PRINT
、 BEGIN TRANSACTION
或 等COMMIT 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