Я отвечаю на комментарий, а не на вопрос здесь, который является «Потому что я хочу использовать цикл while с переменной типа int и возрастающей» . Проще говоря, не надо. Лучший (и я имею в виду лучший) способ сделать это с помощью Tally (они также быстрее, чем rCTE).
Ниже приведено число 1-1 000 000, и оно будет выполнено вс точностью до секунд:
WITH N AS(
SELECT N
FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N)),
Tally AS (
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I
FROM N N1, N N2, N N3, N N4, N N5) --1 Million
SELECT I
FROM Tally;
Выше приведено решение на основе множеств, которое можно «легко» расширить для работы с наборами данных;например, создание всех дат между двумя датами.
Джефф Моден также может прочитать о Tallys в этой статье: Таблица «Numbers» или «Tally»: что это такое и как оно заменяетцикл
Этот вопрос на самом деле не отвечает реальной проблеме, с которой сталкивается ОП, он просто вводит их в подсчет 9, и это не помещается в комментарии). Я бы предложил, Хай Нгуен, задать новый вопрос, объясняя ваши реальные цели, чтобы мы могли помочь вам понять, как вы можете применить вышеизложенное на практике.