SET ROWCOUNT (Transact-SQL)

適用於:SQL ServerAzure SQL資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

讓 SQL Server 在傳回指定的資料列數之後,停止處理查詢。

Transact-SQL 語法慣例

Syntax

SET ROWCOUNT { number | @number_var }   

注意

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

引數

number | @number_var
這是停止特定查詢之前所要處理的資料列數,這是一個整數。

備註

重要

使用 SET ROWCOUNT 不會影響將來 SQL Server 版本中的 DELETE、INSERT 和 UPDATE 陳述式。 請避免在新的開發工作中使用 SET ROWCOUNT 搭配 DELETE、INSERT 和 UPDATE 陳述式,並計畫修改目前正在使用它的應用程式。 如需類似的行為,請使用 TOP 語法。 如需詳細資訊,請參閱 TOP (Transact-SQL)

若要將這個選項設為關閉,以便傳回所有資料列,請指定 SET ROWCOUNT 0。

設定 SET ROWCOUNT 選項會讓大部分 Transact-SQL 陳述式,在受到指定的資料列數影響之後,停止處理。 其中包括觸發程序。 ROWCOUNT 選項不會影響動態資料指標,但它會限制索引鍵集和非感應式資料指標之資料列集。 在使用這個選項時應該要特別小心。

如果資料列計數值比較小,SET ROWCOUNT 會覆寫 SELECT 陳述式 TOP 關鍵字。

SET ROWCOUNT 的設定是在執行階段進行設定,而不是在剖析階段進行設定。

權限

需要 public 角色中的成員資格。

範例

SET ROWCOUNT 會在指定的資料列數之後停止處理。 在下列範例中,請注意超過 500 個資料列符合 Quantity 小於 300 的準則。 不過在套用 SET ROWCOUNT 之後,您會看出並未傳回所有資料列。

USE AdventureWorks2022;  
GO  
SELECT count(*) AS Count  
FROM Production.ProductInventory  
WHERE Quantity < 300;  
GO  

以下為結果集。

Count 
----------- 
537 

(1 row(s) affected)

現在將 ROWCOUNT 設為 4,而傳回所有資料列,則示範只傳回 4 個資料列。

SET ROWCOUNT 4;  
SELECT *  
FROM Production.ProductInventory  
WHERE Quantity < 300;  
GO  
  
-- (4 row(s) affected)

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

SET ROWCOUNT 會在指定的資料列數之後停止處理。 在下列範例中,請注意,有超過 20 個資料列符合 AccountType = 'Assets' 的準則。 不過在套用 SET ROWCOUNT 之後,您會看出並未傳回所有資料列。

-- Uses AdventureWorks  
  
SET ROWCOUNT 5;  
SELECT * FROM [dbo].[DimAccount]  
WHERE AccountType = 'Assets';  

若要傳回所有資料列,請將 ROWCOUNT 設為 0。

-- Uses AdventureWorks  
  
SET ROWCOUNT 0;  
SELECT * FROM [dbo].[DimAccount]  
WHERE AccountType = 'Assets';  

另請參閱

SET 陳述式 (Transact-SQL)