Share via


SET ROWCOUNT (Transact-SQL)

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

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

語法

SET ROWCOUNT { number | @number_var } 

引數

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

備註

重要注意事項重要事項

使用 SET ROWCOUNT 不會影響 SQL Server 下一版本中的 DELETE、INSERT 和 UPDATE 陳述式。請勿在新的開發工作中使用 SET ROWCOUNT 搭配 DELETE、INSERT 和 UPDATE 陳述式,並請規劃修改目前正在使用它的應用程式。另外,對於目前在使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 陳述式,我們建議您重新撰寫它們來使用 TOP 語法。如需詳細資訊,請參閱<DELETE (Transact-SQL)>、<INSERT (Transact-SQL)>或<UPDATE (Transact-SQL)>。

針對遠端資料表以及本機和遠端資料分割檢視來進行的 INSERT、UPDATE 和 DELETE 陳述式,其 SET ROWCOUNT 選項的設定都會被忽略。

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

[!附註]

設定 SET ROWCOUNT 選項會使大部份 Transact-SQL 陳述式在受到指定資料列數影響之後停止處理。其中包括觸發程序和資料修改陳述式,如 INSERT、UPDATE 和 DELETE。ROWCOUNT 選項不會影響動態資料指標,但它會限制索引鍵集和非感應式資料指標之資料列集。您使用這個選項時,應該非常小心,它主要是搭配 SELECT 陳述式一起使用。

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

當在 INSERT、UPDATE 和 DELETE 陳述式中使用明確的 TOP 運算式時,會忽略 INSERT、UPDATE 和 DELETE 陳述式中的 SET ROWCOUNT。其中包括 INSERT 後面接著 SELECT 子句的陳述式。

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

權限

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

範例

SET ROWCOUNT 會在指定的資料列數之後停止處理。在下列範例中,請注意,545 個資料列符合 Quantity 小於 300 的準則。不過,您可以從更新傳回的資料列數中,看出並非所有資料列都已處理。ROWCOUNT 會影響所有 Transact-SQL 陳述式。

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

以下為結果集:

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

(1 row(s) affected)

現在,請將 ROWCOUNT 設為 4,再利用小於 300 的 Quantity 來更新所有資料列。

SET ROWCOUNT 4;
UPDATE Production.ProductInventory
SET Quantity = 400
WHERE Quantity < 300;
GO
(4 row(s) affected)

請參閱

參考