집 >데이터 베이스 >MySQL 튜토리얼 >저장 프로시저를 사용하여 MySQL 테이블의 모든 행을 어떻게 반복할 수 있습니까?
프로시저를 사용하여 테이블의 모든 행을 반복
MySQL에서 테이블의 모든 행을 반복하려면 저장 프로시저를 만들어야 합니다. 프로시저를 사용하면 일련의 SQL 문을 단일 단위로 캡슐화하고 이를 블록으로 실행할 수 있습니다.
프로시저 생성
테이블의 모든 행을 반복하려면 'A'를 입력하고 특정 작업을 수행하려면 다음 구문을 사용하여 프로시저를 생성합니다.
DROP PROCEDURE IF EXISTS ROWPERROW; -- Delete existing procedure if any DELIMITER ;; -- Change delimiter to avoid statement-by-statement execution CREATE PROCEDURE ROWPERROW() BEGIN DECLARE n INT DEFAULT 0; -- Declare a variable to count rows DECLARE i INT DEFAULT 0; -- Declare a variable for looping SELECT COUNT(*) INTO n FROM table_A; -- Get the total number of rows SET i = 0; -- Initialize loop counter WHILE i < n DO -- Insert the current row into table 'B' INSERT INTO table_B(ID, VAL) SELECT (ID, VAL) FROM table_A LIMIT i, 1; SET i = i + 1; -- Increment loop counter END WHILE; End; ;; DELIMITER ; -- Reset the delimiter
프로시저 실행
프로시저가 생성되면 호출할 수 있습니다. 다음 구문을 사용합니다.
CALL ROWPERROW();
이것은 프로시저를 실행하고 테이블 'A'의 각 행을 반복하여 지정된 작업을 수행합니다.
예
'ID'와 'VAL' 필드가 있는 'A'와 'B'라는 두 개의 테이블이 있다고 가정해 보겠습니다. 다음 프로시저는 'A' 테이블의 모든 행을 반복하고 데이터를 'B' 테이블에 복사합니다.
DROP PROCEDURE IF EXISTS ROWPERROW; DELIMITER ;; CREATE PROCEDURE ROWPERROW() BEGIN DECLARE n INT DEFAULT 0; DECLARE i INT DEFAULT 0; SELECT COUNT(*) INTO n FROM table_A; 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; ;; DELIMITER ;
프로시저를 실행하고 데이터를 복사하려면 다음 명령을 실행합니다.
CALL ROWPERROW();
위 내용은 저장 프로시저를 사용하여 MySQL 테이블의 모든 행을 어떻게 반복할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!