我想让我的使用者指定他们想要在存储过程中返回的行数。我想模仿这种行为:
SELECT TOP 100 AccountId ,
AccountName
FROM dbo.Account
但是以这种方式:
DECLARE @resultCount INT = 100;
SELECT TOP @resultCount AccountId ,
AccountName
FROM dbo.Account
当然第二个版本导致“@resultCount附近的语法不正确”错误。有没有办法做到这一点,而不分解为连接SQL字符串和使用EXEC?我觉得这不太可维护。
答案 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