2013-02-26 87 views
2

我想讓我的客戶指定他們希望在存儲過程中返回的行數。我在尋找模仿這種行爲:所需結果行數作爲存儲過程中的參數

SELECT TOP 100 AccountId , 
     AccountName 
FROM dbo.Account 

但是以這種方式:

DECLARE @resultCount INT = 100; 

SELECT TOP @resultCount AccountId , 
     AccountName 
FROM dbo.Account 

當然第2個版本將導致錯誤「近@resultCount不正確的語法」。有沒有辦法做到這一點,而不打破SQL字符串並使用EXEC?我覺得這不是很好維護。

+3

左右'@ resultCount'只要把括號:'SELECT TOP(@resultCount)ACCOUNTID ...' – 2013-02-26 22:26:09

+0

我相信方法你想避免的是唯一可以工作的人。 – 2013-02-26 22:26:13

+0

http://msdn.microsoft.com/en-us/library/ms189463.aspx – xQbert 2013-02-26 22:27:00

回答

8

添加括號()各地@resultCount

DECLARE @resultCount INT = 100; 

SELECT TOP (@resultCount) AccountId , 
     AccountName 
FROM dbo.Account 
+0

好吧,我很尷尬我不知道那:) – 2013-02-26 22:44:40

1

B.使用TOP具有可變 下面的示例使用一個變量來指定在查詢結果集返回的員工數量。 的Transact-SQL

USE AdventureWorks2012; 
GO 
DECLARE @p AS int = 10; 
SELECT TOP (@p) JobTitle, HireDate, VacationHours 
FROM HumanResources.Employee 
ORDER BY VacationHours DESC 
GO 

所以你的情況......

SELECT TOP (@resultCount) AccountId , 
     AccountName 
FROM dbo.Account