> 데이터 베이스 > MySQL 튜토리얼 > MySQL 저장 프로시저에서 WHILE...LOOP 문을 올바르게 사용하는 방법은 무엇입니까?

MySQL 저장 프로시저에서 WHILE...LOOP 문을 올바르게 사용하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-30 12:55:15
원래의
485명이 탐색했습니다.

How to Correctly Use WHILE...LOOP Statements in MySQL Stored Procedures?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿