>  기사  >  데이터 베이스  >  루프에 대한 mysql 저장 프로시저

루프에 대한 mysql 저장 프로시저

WBOY
WBOY원래의
2023-05-12 10:08:062984검색

MySQL 저장 프로시저는 MySQL에서 SQL 코드를 작성, 저장 및 재사용하는 방법입니다. 저장 프로시저는 매개 변수 입력을 수락 및 처리하고, SQL 문을 실행하여 특정 작업을 완료하고, 결과를 반환할 수 있습니다. MySQL에서 저장 프로시저는 복잡한 비즈니스 로직과 데이터 처리에 매우 유용하며, 이는 데이터베이스의 효율성과 안정성을 향상시킬 수 있습니다. for 루프는 MySQL 저장 프로시저에서 일반적으로 사용되는 제어 흐름 문 중 하나이며 특정 코드 블록을 반복적으로 실행하는 데 사용할 수 있습니다.

for 루프 문의 기본 구문 형식은 다음과 같습니다.

for loop_variable [reverse] in lower_bound..upper_bound loop
    -- 可执行的代码块
end loop;

그중 loop_variable은 각 루프에서 자동으로 업데이트되는 루프 변수입니다. reverse는 선택 사항이며 반대 방향으로 루프를 실행할지 여부를 나타냅니다. ; lower_bound 및 upper_bound는 루프의 시작 및 끝 값이며 변수, 표현식 또는 상수일 수 있습니다.

저장 프로시저에서 for 루프를 사용하면 코드를 더 간결하고 효율적으로 만들 수 있습니다. 다음은 예제를 통해 MySQL 저장 프로시저에서 for 루프를 사용하는 방법을 자세히 소개합니다.

학생 ID, 이름, 점수 등의 정보가 포함된 학생 테이블이 있다고 가정해 보겠습니다. 이제 점수에 따라 학생 수를 계산하고 통계 결과를 새 테이블에 저장하는 저장 프로시저를 작성해야 합니다. for 루프 문을 사용하여 모든 학생의 점수를 반복한 다음 점수 범위에 따라 학생 수를 계산할 수 있습니다.

먼저 점수 통계 결과를 저장하기 위해 새로운 테이블 Score_statistics를 생성해야 합니다:

CREATE TABLE score_statistics (
  id INT(11) NOT NULL AUTO_INCREMENT,
  score_range VARCHAR(50) DEFAULT NULL,
  count INT(11) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

다음으로, 학생 테이블을 순회하고 점수 범위 내의 사람 수를 계산하기 위한 저장 프로시저 계산_score_count를 작성합니다:

DELIMITER $$
CREATE PROCEDURE calculate_score_count()
BEGIN
  DECLARE i INT DEFAULT 0;
  DECLARE score_range VARCHAR(50);
  DECLARE count INT DEFAULT 0;
  DECLARE lower_bound INT DEFAULT 0;
  DECLARE upper_bound INT DEFAULT 0;
  SET i = 1;
  WHILE i <= 10 DO
    SET lower_bound = (i - 1) * 10;
    SET upper_bound = i * 10;
    SET score_range = CONCAT(lower_bound, '-', upper_bound);
    SET count = (SELECT COUNT(*) FROM student WHERE score BETWEEN lower_bound AND upper_bound);
    INSERT INTO score_statistics (score_range, count) VALUES (score_range, count);
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

In the 위 코드에서는 while 루프 문을 사용하여 점수 범위를 순회합니다. 각 점수 범위에 대해 해당 lower_bound 및 upper_bound를 계산한 다음 SELECT 문을 사용하여 학생 테이블에서 해당 범위에 있는 사람 수를 계산합니다. . 마지막으로 Score_range 및 count가 Score_statistics 테이블에 삽입됩니다.

저장 프로시저를 호출하면 다음과 같은 결과를 얻을 수 있습니다.

call calculate_score_count();
select * from score_statistics;

score_statistics 테이블에는 점수 범위와 해당 인원 수 결과가 저장됩니다. 데이터는 다음과 같습니다.

1870 -801 980-9001090-1001
id score_range count
1 0-10 1
2 10-20 2
3 20-30 3
4 30-40 ㅋㅋㅋ
위의 예를 통해 알 수 있습니다. for 루프 문을 사용하여 MySQL 저장 프로시저 작성을 단순화하고 프로그램 효율성을 효과적으로 향상시킬 수 있습니다. 실제 개발 프로세스에서는 특정 비즈니스 요구 사항에 따라 보다 효율적이고 유연한 저장 프로시저를 작성할 수 있습니다.

위 내용은 루프에 대한 mysql 저장 프로시저의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.