Programing

SQL Server에서 for-loop의 구문

lottogame 2020. 4. 25. 09:50
반응형

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

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

추가 정보

아무도 루프 내부의 데이터 세트를 실제로 반복하는 방법을 포함하는 답변을 아무도 게시하지 않았기 때문에 키워드 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

이건 어때요:

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.


현재 월의 시작 날짜와 종료 날짜를 나열하는 T-SQL의 While 루프 예제

DECLARE @Today DATE= GETDATE() ,
@StartOfMonth DATE ,
@EndOfMonth DATE;

DECLARE @DateList TABLE ( DateLabel VARCHAR(10) );
SET @EndOfMonth = EOMONTH(GETDATE());
SET @StartOfMonth = DATEFROMPARTS(YEAR(@Today), MONTH(@Today), 1);

WHILE @StartOfMonth <= @EndOfMonth
BEGIN
    INSERT  INTO @DateList
    VALUES  ( @StartOfMonth );
    SET @StartOfMonth = DATEADD(DAY, 1, @StartOfMonth);
END;

SELECT  DateLabel
FROM    @DateList;  

참고 URL : https://stackoverflow.com/questions/6069024/syntax-of-for-loop-in-sql-server

반응형