Лучшим решением было бы вообще не использовать TOP
- но вместо этого ROWCOUNT
:
SET ROWCOUNT
останавливает обработку после указанного числа строк.
...
Чтобы вернуть все строки, установите ROWCOUNT
в 0
.
Обратите внимание, что ROWCOUNT
рекомендуется использовать только с select
операторами -
Важно
Использование SET ROWCOUNT
не повлияет на операторы DELETE
, INSERT
и UPDATE
в будущем выпуске SQL Server.Избегайте использования операторов SET ROWCOUNT
с DELETE
, INSERT
и UPDATE
в новых разработках и запланируйте модификацию приложений, которые в настоящее время используют их.Для аналогичного поведения используйте синтаксис TOP
.
DECLARE @V_COUNT INT = 0
SET ROWCOUNT @V_COUNT -- 0 means return all rows...
SELECT *
FROM MY_TABLE
ORDER BY COL1
SET ROWCOUNT 0 -- Avoid side effects...
Это избавит вас от необходимости знать, сколько строк в таблице
Обязательно повторитеустановите ROWCOUNT
обратно на 0
после запроса, чтобы избежать побочных эффектов (Хорошая точка зрения Шнуго в комментариях).