Цикл и печать без сообщений - PullRequest
0 голосов
/ 19 ноября 2009

Я использую этот цикл для печати номера

DECLARE @A Int
SET @A = 33
WHILE @A < 55
BEGIN
SELECT @A as sequence
SET @A = @A + 1
END
GO

Но проблема в том, что с каждым циклом выводится сообщение, например:

sequence
-----------
53

(затронут 1 ряд)

Как напечатать в таком порядке:

34
35
36
37

Может помочь мне с примером CTE для этого?

Ответы [ 2 ]

1 голос
/ 19 ноября 2009

Использовать PRINT

DECLARE @A INT
SET @A = 33
WHILE @A < 55
BEGIN
PRINT @A
SET @A = @A + 1
END
GO

Для CTE вы можете попробовать

DECLARE @A INT,
        @End INT
SET @A = 33
SET @End = 55

;WITH Selected AS (
        SELECT  @A Val
        UNION ALL
        SELECT  Val + 1
        FROM    Selected
        WHERE   Val < @End
)
SELECT *
FROM Selected
1 голос
/ 19 ноября 2009

Если вам нужно только напечатать значение, вы можете использовать оператор PRINT . Если вы действительно хотите вернуть результат (например, если ваш код является частью хранимой процедуры), вы можете определить временную переменную табличного типа , вставить в нее данные в каждом цикле, а затем вернуть содержимое таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...