MySQL의 For 루프: 구문 및 사용법 이해
MySQL에서 LOOP 문을 사용하면 특정 조건이 충족될 때까지 코드 블록을 반복적으로 실행할 수 있습니다. . 그러나 주어진 예에서 볼 수 있듯이 LOOP 구문 자체를 사용하면 잘못된 동작이 발생할 수 있습니다.
MySQL에서 루프를 정의하려면 저장된 루프 내에서 WHILE...LOOP 구문을 사용해야 합니다. 절차. 수정된 예는 다음과 같습니다.
DELIMITER $$ CREATE PROCEDURE ABC() BEGIN DECLARE a INT Default 0 ; simple_loop: WHILE a < 5 DO SET a=a+1; select a; END WHILE simple_loop; END $$
이 수정된 구문은 "a < 5" 조건이 충족될 때까지 루프가 반복되도록 합니다. 원래 예에서 사용된 LEAVE 문은 루프를 종료하는 데 필요하지 않습니다.
또한 LOOP 구문을 조건 없이 사용하면 무한 루프에 들어가므로 반드시 종료해야 한다는 점에 유의하는 것도 중요합니다. 수동으로 종료됩니다.
WHILE...LOOP 구문의 올바른 사용법을 보여주기 위해 무작위 테이블을 생성하는 다음 예를 고려하십시오. 값:
-- Create a table to store random values DROP TABLE IF EXISTS foo; CREATE TABLE foo ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, val SMALLINT UNSIGNED NOT NULL DEFAULT 0 ) ENGINE=InnoDB; -- Create a stored procedure to insert random values into the table DROP PROCEDURE IF EXISTS load_foo_test_data; DELIMITER # CREATE PROCEDURE load_foo_test_data() BEGIN DECLARE v_max INT UNSIGNED DEFAULT 1000; DECLARE v_counter INT UNSIGNED DEFAULT 0; -- Truncate the table to clear existing data TRUNCATE TABLE foo; -- Start a transaction START TRANSACTION; -- Use a WHILE loop to insert random values WHILE v_counter < v_max DO INSERT INTO foo (val) VALUES (FLOOR(0 + (RAND() * 65535))); SET v_counter = v_counter + 1; END WHILE; -- Commit the transaction to save the changes COMMIT; END # DELIMITER ; -- Call the stored procedure to insert test data CALL load_foo_test_data(); -- Select and display the values from the table SELECT * FROM foo ORDER BY id;
이 예에서는 두 개의 변수 v_max 및 v_counter를 초기화하여 각각 삽입할 값의 최대 수를 지정하고 현재 반복을 추적합니다.
그런 다음 루프가 반복됩니다. , v_max에 도달할 때까지 foo 테이블에 임의의 값을 삽입합니다.
이러한 구문 지침을 이해하고 적용하면 반복 작업을 처리하거나 여러 데이터 요소를 반복하기 위한 MySQL의 WHILE...LOOP 구문입니다.
위 내용은 MySQL 저장 프로시저에서 WHILE...LOOP 문을 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!