Sql-Server
帶有可選參數限制行的儲存過程(如果指定)
如何擁有一個允許消費者有選擇地指定返回的行數的儲存過程?
如果未指定行數,則返回所有行。
“最簡單”的方法是將輸入參數化為 TOP。我使用的數字是 BIGINT 的最大值。您可能永遠不會有比查詢返回的更多行。
USE master GO CREATE PROCEDURE dbo.Limiter (@Top BIGINT = 9223372036854775807) AS BEGIN SELECT TOP (@Top) * FROM sys.databases END EXEC dbo.Limiter @Top = 1 EXEC dbo.Limiter
請小心,因為您可以在此處引入參數嗅探症狀。
如果您查看這兩者的計劃,則兩者的 TOP 運算符都需要一行。
除非您重新編譯或添加 OPTIMIZE FOR 提示,否則首先執行 top 的任何輸入都將被記憶體。
您還應該知道添加 TOP 運算符可能會引入行目標。