web-dev-qa-db-ja.com

SQL:SELECT TOP @amountのように、TOPのパラメーターをどのように使用しますか?

Vs2008クエリビルダーを使用して、「TOP」コマンドのパラメーターを取得するクエリを作成しようとすると、「上部の式にエラーがあります」というエラーが発生する

作品:

SELECT TOP 5 * FROM dbo.SomeTable
WHERE SomeColumn = SomeValue

動作しません:

SELECT TOP @param1 * FROM dbo.SomeTable
WHERE SomeColumn = SomeValue

代替テキストhttp://www.freeimagehosting.net/uploads/f9b9354577.jpg

40
Alon Amir

括弧が必要、SQL Server 2005以降のみ

SELECT TOP (@param1) ...
94
gbn

SQL Serverの古いバージョンでは、次のものを使用できます。

SET ROWCOUNT @NumberOfResults
SELECT * FROM MyTable
SET ROWCOUNT 0

ただし、2008年にはこの手法を使用しないでください

SET ROWCOUNTを使用しても、SQL Server(2008)の次のリリースでは、DELETE、INSERT、およびUPDATEステートメントには影響しません。新しい開発作業では、SET ROWCOUNTをDELETE、INSERT、およびUPDATEステートメントと共に使用しないでください。また、現在使用しているアプリケーションを変更することを計画してください。また、現在SET ROWCOUNTを使用しているDELETE、INSERT、およびUPDATEステートメントについては、TOP構文を使用するように書き直すことをお勧めします。詳細については、「DELETE(Transact-SQL)」、「INSERT(Transact-SQL)」、または「UPDATE(Transact-SQL)」を参照してください。

6
Mike Valenty