2

我想让我的消费者指定他们希望在存储过程中返回的行数。我正在寻找模仿这种行为:

SELECT  TOP 100 AccountId ,
        AccountName
FROM    dbo.Account

但以这种方式:

DECLARE @resultCount INT = 100;

SELECT  TOP @resultCount AccountId ,
        AccountName
FROM    dbo.Account

当然,第二个版本会导致“@resultCount 附近的语法不正确”错误。有没有办法做到这一点,而不会分解为包含 SQL 字符串并使用 EXEC?我发现这不是很容易维护。

4

2 回答 2

9

( )在 周围添加括号@resultCount

DECLARE @resultCount INT = 100;

SELECT  TOP (@resultCount) AccountId ,
        AccountName
FROM    dbo.Account
于 2013-02-26T22:27:14.650 回答
1

B. 将 TOP 与变量一起使用 下面的示例使用变量来指定查询结果集中返回的员工人数。事务处理 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
于 2013-02-26T22:28:02.797 回答