【问题标题】:Desired number of result rows as parameter in stored procedure所需的结果行数作为存储过程中的参数
【发布时间】:2013-02-26 22:23:50
【问题描述】:

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

SELECT  TOP 100 AccountId ,
        AccountName
FROM    dbo.Account

但是以这种方式:

DECLARE @resultCount INT = 100;

SELECT  TOP @resultCount AccountId ,
        AccountName
FROM    dbo.Account

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

【问题讨论】:

标签: sql sql-server stored-procedures parameters


【解决方案1】:

@resultCount周围添加括号()

DECLARE @resultCount INT = 100;

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

【讨论】:

  • 好的,不好意思我不知道 :)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2023-03-20
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多