Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

저장 프로시저에서 MySQL LOOP 문을 어떻게 사용할 수 있습니까?


MySQL은 LOOP를 제공합니다. 루프 레이블을 사용하는 추가 유연성과 함께 코드 블록을 반복적으로 실행하는 문. 루프를 제어할 수 있는 다음 두 문이 있습니다 -

LEAVE 문

조건 확인을 기다리지 않고 루프를 즉시 종료할 수 있습니다.

문 반복

이를 통해 그 아래에 있는 전체 코드를 건너뛰고 새 반복을 시작할 수 있습니다.

LOOP 사용을 보여주기 위해 저장 프로시저가 있는 문에서 다음은 2,4,6,8 등과 같은 짝수로 문자열을 구성하는 저장 프로시저입니다. −

mysql> Delimiter //
mysql> CREATE PROCEDURE LOOP_loop()
    -> BEGIN
    -> DECLARE A INT;
    -> DECLARE XYZ VARCHAR(255);
    -> SET A = 1;
    -> SET XYZ = '';
    -> loop_label: LOOP
    -> IF A > 10 THEN
    -> LEAVE loop_label;
    -> END IF;
    -> SET A = A + 1;
    -> IF (A mod 2) THEN
    -> ITERATE loop_label;
    -> ELSE
    -> SET XYZ = CONCAT(XYZ,A,',');
    -> END IF;
    -> END LOOP;
    -> SELECT XYZ;
    -> END //
Query OK, 0 rows affected (0.07 sec)

이제 이 프로시저를 호출할 때 아래 결과를 볼 수 있습니다.

mysql> DELIMITER ;
mysql> CALL LOOP_loop ();
+-------------+
| XYZ         |
+-------------+
| 2,4,6,8,10, |
+-------------+
1 row in set (0.04 sec)
Query OK, 0 rows affected (0.04 sec)

여기 위 쿼리에서 A의 값이 10보다 크면 LEAVE 문으로 인해 루프가 종료됩니다. A 값이 홀수이면 ITERATE 문은 그 아래의 모든 것을 무시하고 새 반복을 시작합니다. A의 값이 짝수이면 ELSE 문의 블록은 짝수로 문자열을 작성합니다.