MySQL 테이블의 행을 반복하는 방법: 프로시저와 커서?

DDD
풀어 주다: 2024-11-12 14:21:02
원래의
912명이 탐색했습니다.

How to Loop Through Rows in a MySQL Table: Procedures vs. Cursors?

MySQL 테이블에서 행 반복

MySQL에서는 프로시저 또는 커서 기반을 사용하여 테이블 행 반복을 수행할 수 있습니다. 접근하다. 이 문서에서는 테이블 A에서 테이블 B로 데이터를 복사하는 것과 관련된 특정 시나리오를 기반으로 두 가지 방법을 모두 살펴봅니다.

프로시저 기반 접근 방식

프로시저는 다음과 같은 작업 집합을 캡슐화합니다. 테이블의 행을 반복할 수 있습니다. 절차의 예는 다음과 같습니다.

DELIMITER ;;

CREATE PROCEDURE ROWPERROW()
BEGIN
  DECLARE n INT DEFAULT 0;
  DECLARE i INT DEFAULT 0;
  SELECT COUNT(*) FROM table_A INTO n;
  SET i=0;
  WHILE i<n DO 
    INSERT INTO table_B(ID, VAL) SELECT ID, VAL FROM table_A LIMIT i,1;
    SET i = i + 1;
  END WHILE;
END;
;;
로그인 후 복사

프로시저를 생성한 후 CALL ROWPERROW();를 사용하여 실행할 수 있습니다.

커서 기반 접근 방식

커서를 사용하면 쿼리에서 반환된 행 집합을 반복할 수 있습니다. 커서 기반 접근 방식은 다음과 같습니다.

DELIMITER ;;

CREATE PROCEDURE cursor_ROWPERROW()
BEGIN
  DECLARE cursor_ID INT;
  DECLARE cursor_VAL VARCHAR;
  DECLARE done INT DEFAULT FALSE;
  DECLARE cursor_i CURSOR FOR SELECT ID,VAL FROM table_A;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  OPEN cursor_i;
  read_loop: LOOP
    FETCH cursor_i INTO cursor_ID, cursor_VAL;
    IF done THEN
      LEAVE read_loop;
    END IF;
    INSERT INTO table_B(ID, VAL) VALUES(cursor_ID, cursor_VAL);
  END LOOP;
  CLOSE cursor_i;
END;
;;
로그인 후 복사

적절한 데이터 유형으로 변수를 선언하고 오류나 예외를 처리해야 합니다.

고려 사항

프로시저 기반 접근 방식과 커서 기반 접근 방식을 모두 사용하여 테이블 행을 반복할 수 있습니다. 그러나 프로시저 기반 방법은 커서보다 유연성이 떨어집니다. 커서를 사용하면 여러 행을 동시에 업데이트하는 등 더 복잡한 작업이 가능합니다.

성능상의 이유로 일반적으로 반복 메커니즘보다 집합 기반 쿼리가 선호됩니다. 그러나 실시간 업데이트가 필요한 복잡한 작업이나 시나리오의 경우 루프 접근 방식이 필요할 수 있습니다.

위 내용은 MySQL 테이블의 행을 반복하는 방법: 프로시저와 커서?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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