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の使用に分解せずにこれを行う方法はありますか? 私はそれが非常に維持可能ではないと思います。

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 を使用する 次の例では、変数を使用して、クエリ結果セットで返される従業員数を指定します。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
于 2013-02-26T22:28:02.797 に答える