Подтвердить что ты не робот

SQL: Как использовать параметр TOP, например, в SELECT TOP @amount?

Используя построитель запросов vs2008, я пытаюсь сделать запрос, который получает параметр для команды "TOP", а затем я сталкиваюсь с ошибкой "Ошибка в верхнем выражении"

Работает:

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

Не работает:

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

alt text http://www.freeimagehosting.net/uploads/f9b9354577.jpg

4b9b3361

Ответ 1

Нужна скобка и только для SQL Server 2005 и выше

SELECT TOP (@param1) ...

Ответ 2

Для более старых версий SQL Server вы можете использовать:

SET ROWCOUNT @NumberOfResults
SELECT * FROM MyTable
SET ROWCOUNT 0

Однако вы не должны использовать этот метод в 2008 году:

Использование SET ROWCOUNT не повлияет DELETE, INSERT и UPDATE в следующей версии SQL Server (2008). Не используйте SET ROWCOUNT с DELETE, INSERT и UPDATE в новых разработках и планировать изменять приложения, которые в настоящее время используются Это. Кроме того, для DELETE, INSERT и Операторы UPDATE, которые в настоящее время используют SET ROWCOUNT, мы рекомендуем вам переписать их для использования синтаксиса TOP. Для получения дополнительной информации см. DELETE (Transact-SQL), INSERT (Transact-SQL), или UPDATE (Transact-SQL).