Ответ 1
Нужна скобка и только для SQL Server 2005 и выше
SELECT TOP (@param1) ...
Используя построитель запросов 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
Нужна скобка и только для SQL Server 2005 и выше
SELECT TOP (@param1) ...
Для более старых версий 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).