期望的结果行数作为存储过程中的参数

时间:2013-02-26 22:23:50

标签: sql sql-server stored-procedures parameters

我想让我的使用者指定他们想要在存储过程中返回的行数。我想模仿这种行为:

SELECT  TOP 100 AccountId ,
        AccountName
FROM    dbo.Account

但是以这种方式:

DECLARE @resultCount INT = 100;

SELECT  TOP @resultCount AccountId ,
        AccountName
FROM    dbo.Account

当然第二个版本导致“@resultCount附近的语法不正确”错误。有没有办法做到这一点,而不分解为连接SQL字符串和使用EXEC?我觉得这不太可维护。

2 个答案:

答案 0 :(得分:9)

(附近添加括号) @resultCount

DECLARE @resultCount INT = 100;

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

答案 1 :(得分: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