REPEAT

REPEAT (조건 반복)

SQL 사용자 정의 함수에서 조건이 충족되는 동안 문 블록을 반복 처리하게 하는 문법이에요. 최소 한 번은 실행되는 루프예요.

출처: 문서

본문

REPEAT UNTIL 문은 SQL 사용자 정의 함수에서 조건이 충족되는 동안 문 블록을 처리하게 하는 선택적 구조예요. 조건은 각 반복의 마지막 단계로 검증돼요.

문 블록은 적어도 한 번은 처리돼요. 첫 번째 및 이후의 모든 처리 후에 condition 표현식이 검증돼요. 결과가 true면 처리는 END REPEAT로 이동해 함수의 다음 문을 계속해요. 결과가 false면 문이 다시 처리돼요.

REPEAT 키워드 앞의 선택적 label은 블록에 이름을 붙이는 데 사용할 수 있어요.

WHILE 문은 매우 비슷한데, 차이는 REPEAT에서는 문이 적어도 한 번 처리되고 WHILE 블록에서는 문이 전혀 처리되지 않을 수도 있다는 점이에요.

시그니처

[label :] REPEAT
    statements
UNTIL condition
END REPEAT

예시

다음 SQL UDF는 a의 값이 10 이상이 될 때까지 실행되는 REPEAT 문이 있는 UDF를 보여줘요.

FUNCTION test_repeat(a bigint)
  RETURNS bigint
  BEGIN
    REPEAT
      SET a = a + 1;
    UNTIL a >= 10
    END REPEAT;
    RETURN a;
  END

a는 입력 값이기도 하고 검사 전에 증가하므로, UDF는 9 이하 입력 값에 대해 항상 10을 반환하고, 더 높은 모든 값에 대해서는 입력 값에 1을 더한 값을 반환해요.

결과와 설명이 함께 있는 몇 가지 예시 호출은 다음과 같아요:

SELECT test_repeat(5); -- 10
SELECT test_repeat(9); -- 10
SELECT test_repeat(10); -- 11
SELECT test_repeat(11); -- 12
SELECT test_repeat(12); -- 13

REPEAT 문을 다른 문과 결합해 사용하는 다양한 복잡도의 추가 예시는 예시 SQL UDF 문서에서 확인할 수 있어요.

더 알아보기 (Learn more)

WHILE이나 LOOP와의 차이점이 궁금하다면 각 문서를, SQL UDF 전반은 SQL 사용자 정의 함수 문서를 참고해요.