MySQL 저장 프로시저 루프는 저장 프로시저가 다양한 조건에 대해 특정 작업을 수행할 수 있도록 저장 프로시저에서 사용할 수 있는 매우 중요한 언어 구조입니다. 이 기사에서는 개발자가 MySQL 저장 프로시저 언어를 더 잘 이해하고 적용할 수 있도록 MySQL 저장 프로시저의 루프 구조와 사용 시나리오 및 사용법을 소개합니다.
1. MySQL 저장 프로시저의 루프 구조
MySQL 저장 프로시저에는 WHILE 루프와 FOR 루프의 두 가지 루프 구조가 있습니다. 아래에서는 문법 구조와 사용 시나리오를 차례로 소개합니다.
WHILE 루프는 가장 기본적인 루프 구조이며 구문은 다음과 같습니다.
WHILE condition DO -- 循环体语句 END WHILE;
여기서 조건은 논리 표현식이고, 표현식이 true이면 루프 본문 문이 실행됩니다. 루프 본문 문이 실행될 때마다 조건의 값이 다시 계산됩니다. 조건이 더 이상 참이 아닐 때까지 루프 본문은 점프 아웃되고 END WHILE 이후의 문이 실행됩니다.
예를 들어, 다음 저장 프로시저는 WHILE 루프를 사용하여 1부터 n까지 숫자의 합을 계산합니다.
CREATE PROCEDURE sum(n INT) BEGIN DECLARE i INT DEFAULT 1; DECLARE total INT DEFAULT 0; WHILE i <= n DO SET total = total + i; SET i = i + 1; END WHILE; SELECT total; END;
여기서 변수 i와 total은 각각 합계 값과 루프 수를 계산하는 데 사용됩니다. i 86fdd0a6cd0e3a33fea91bfa4319cbe7 n이 될 때까지 i와 total의 값이 다시 계산됩니다. SELECT 문이 실행되고 전체 값이 반환됩니다.
FOR 루프는 WHILE 루프보다 간단한 루프 구조입니다.
FOR var_name [, var_name] ... IN range DO -- 循环体语句 END FOR;
여기서 var_name은 루프 카운터의 이름이고 range는 루프 카운터의 범위를 나타냅니다. 범위는 다음 형식일 수 있습니다.
예를 들어, 다음 저장 프로시저는 FOR 루프를 사용하여 1에서 n까지 숫자의 제곱을 계산합니다.
CREATE PROCEDURE square(n INT) BEGIN DECLARE i INT; DECLARE v INT; FOR i IN 1 TO n DO SET v = i * i; SELECT v; END FOR; END;
여기서 루프 카운터 i는 1에서 n까지 매번 1씩 증가하고 루프 본문 문은
SET v = i * i; SELECT v;
매번 이 명령문을 실행하면 v의 값이 다시 계산됩니다. i > n이 될 때까지 루프 본문이 튀어나오고 END 문이 실행됩니다.
2. MySQL 저장 프로시저의 순환 사용 시나리오
MySQL 저장 프로시저의 순환 구조는 다음 시나리오에서 더 일반적으로 사용됩니다.
MySQL 저장 프로시저의 순환 구조를 사용하여 처리할 수 있습니다. 일괄 데이터, 일회성 여러 데이터 조각을 처리하여 데이터 처리 효율성과 성능을 향상시킵니다.
예를 들어 다음 저장 프로시저는 WHILE 루프를 사용하여 제품 테이블에서 가격이 100보다 큰 항목의 가격을 일괄 5개씩 줄입니다.
CREATE PROCEDURE update_price() BEGIN DECLARE p_id INT; DECLARE p_price DECIMAL(10,2); DECLARE done INT DEFAULT FALSE; DECLARE cur CURSOR FOR SELECT id, price FROM product WHERE price > 100; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; REPEAT FETCH cur INTO p_id, p_price; IF NOT done THEN SET p_price = p_price - 5; UPDATE product SET price = p_price WHERE id = p_id; END IF; UNTIL done END REPEAT; CLOSE cur; END;
그 중에서 커서 cur는 다음과 같은 항목을 탐색하도록 정의됩니다. 제품 표의 가격이 100보다 큽니다. 루프를 통과할 때마다 커서에서 데이터 조각을 얻고, p_price > 100이면 제품 가격이 업데이트됩니다.
MySQL 저장 프로시저의 루프 구조는 평균, 중앙값 및 기타 통계 지표 계산과 같은 데이터 분석 및 통계에 사용될 수 있습니다.
예를 들어 다음 저장 프로시저는 WHILE 루프를 사용하여 상품 가격의 평균을 계산합니다.
CREATE PROCEDURE avg_price() BEGIN DECLARE p_price DECIMAL(10,2); DECLARE total DECIMAL(10,2) DEFAULT 0; DECLARE count INT DEFAULT 0; DECLARE done INT DEFAULT FALSE; DECLARE cur CURSOR FOR SELECT price FROM product; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; REPEAT FETCH cur INTO p_price; IF NOT done THEN SET total = total + p_price; SET count = count + 1; END IF; UNTIL done END REPEAT; CLOSE cur; SELECT total/count; END;
그 중 커서 cur는 제품 테이블의 상품 가격을 가져오고 루프를 사용하여 합계를 계산합니다. 가격과 상품 수량, 마지막으로 평균 가격을 반환합니다.
3. MySQL 저장 프로시저의 루프 사용 시 주의 사항
MySQL 저장 프로시저의 루프 구조를 사용할 때 다음 사항에 주의해야 합니다.
4. 요약
MySQL 저장 프로시저의 루프 구조는 개발자가 데이터를 처리하고 분석하는 데 중요한 도구로, 대량의 데이터를 효율적으로 처리하고 지표를 계산하는 데 사용할 수 있습니다. 루프 구조를 사용할 때는 저장 프로시저의 안정성과 정확성을 보장하기 위해 루프 카운터의 초기값과 끝값, 루프 문의 정확성, 커서 사용 등의 문제에 주의해야 합니다.
위 내용은 mysql 저장 프로시저 루프의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!