[sql] SQL Server에서 for-loop의 구문

forTSQL 에서 루프 구문은 무엇입니까 ?



답변

T-SQL에는 FOR루프 가없고 WHILE루프가 있습니다.
WHILE (Transact-SQL)

WHILE Boolean_expression
BEGIN

END


답변

for 루프는없고 while 루프 만 있습니다 :

DECLARE @i int = 0

WHILE @i < 20
BEGIN
    SET @i = @i + 1
    /* do some work */
END


답변

추가 정보

아무도 루프 내부의 데이터 세트를 실제로 반복하는 방법을 포함하는 답변을 아무도 게시하지 않았기 때문에 키워드 OFFSET FETCH를 사용할 수 있습니다 .

용법

DECLARE @i INT = 0;
SELECT @count=  Count(*) FROM {TABLE}

WHILE @i <= @count
BEGIN

    SELECT * FROM {TABLE}
    ORDER BY {COLUMN}
    OFFSET @i ROWS
    FETCH NEXT 1 ROWS ONLY

    SET @i = @i + 1;

END


답변

DECLARE @intFlag INT
SET @intFlag = 1
WHILE (@intFlag <=5)
BEGIN
    PRINT @intFlag
    SET @intFlag = @intFlag + 1
END
GO


답변

이건 어때요:

BEGIN
   Do Something
END
GO 10

… 카운트해야 할 경우 증분 카운터를 넣을 수 있습니다.


답변

For 루프는 아직 SQL Server에서 공식적으로 지원되지 않습니다. 이미 FOR 달성에 대한 답변이 있습니다 Loop의 다양한 방식 있습니다. SQL Server에서 다양한 유형의 루프를 달성하는 방법에 대한 답변을 자세히 설명합니다.

FOR 루프

DECLARE @cnt INT = 0;

WHILE @cnt < 10
BEGIN
   PRINT 'Inside FOR LOOP';
   SET @cnt = @cnt + 1;
END;

PRINT 'Done FOR LOOP';

알다시피, 어쨌든 루프의 첫 번째 반복을 완료 해야하는 경우 SQL 서버의 DO..WHILE 또는 REPEAT..UNTIL 버전을 시도 할 수 있습니다 .

DO..WHILE 루프

DECLARE @X INT=1;

WAY:  --> Here the  DO statement

  PRINT @X;

  SET @X += 1;

IF @X<=10 GOTO WAY;

반복 .. UNTIL 루프

DECLARE @X INT = 1;

WAY:  -- Here the REPEAT statement

  PRINT @X;

  SET @X += 1;

IFNOT(@X > 10) GOTO WAY;

참고


답변

간단한 대답은 NO !!입니다.

FORSQL 에는 없지만 , 작동 방식을 사용 WHILE하거나 GOTO달성 할 수 있습니다 FOR.

동안 :

DECLARE @a INT = 10

WHILE @a <= 20
BEGIN
    PRINT @a
    SET @a = @a + 1
END

이동 :

DECLARE @a INT = 10
a:
PRINT @a
SET @a = @a + 1
IF @a < = 20
BEGIN
    GOTO a
END

나는 항상 진술 WHILE보다 선호 한다 GOTO.