테이블의 모든 행을 반복하려면 MySQL에서 저장 프로시저를 사용하십시오. 구문은 다음과 같습니다 -
구분자 //CREATE PROCEDURE yourProcedureName()BEGINDECLARE anyVariableName1 INT DEFAULT 0;DECLARE anyVariableName2 INT DEFAULT 0;SELECT COUNT(*) FROM yourTableName1 INTO anyVariableName1;SET anyVariableName2 =0;WHILE anyVariableName2위의 구문을 이해하기 위해 두 개의 테이블, 즉 하나는 레코드가 있고 두 번째 테이블에는 저장 프로시저를 사용하여 루프의 레코드가 있습니다.
다음은 첫 번째 테이블을 생성하는 쿼리입니다 -
mysql> Create table AllRows -> ( -> Id int, -> Name varchar(100) -> );Query OK, 영향을 받는 행 0개(0.46초)삽입 명령을 사용하여 첫 번째 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -
mysql> insert into AllRows values(1,'John');Query OK, 1개의 row가 영향을 받았습니다(0.12초)mysql> insert into AllRows values(100,'Carol');Query OK, 1개의 row가 영향을 받았습니다(0.13초). )mysql> AllRows 값에 삽입(300,'Sam');쿼리 OK, 1행 영향(0.15초)mysql> AllRows 값에 삽입(400,'Mike');쿼리 OK, 1행 영향(0.20초)사전>select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -
mysql> 선택 *AllRows;출력
+------+-------+| 아이디 | 이름 |+------+-------+| 1 | 존 || 100 | 캐롤 || 300 | 샘 || 400 | 마이크 | +------+-------+4행 세트(0.00초)다음은 두 번째 테이블을 생성하는 쿼리입니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -
mysql> 테이블 생성 SecondTableRows -> ( -> StudentId int, -> StudentName varchar(100) -> );쿼리 OK, 영향을 받는 행 0개(0.54초)이제 저장 프로시저를 사용하여 테이블의 모든 행을 반복할 수 있습니다. 저장 프로시저는 다음과 같습니다 -
mysql> 구분자 //mysql> CREATE PROCEDURE Sp_AllRowsOfATable() -> BEGIN -> DECLARE lastRows INT DEFAULT 0; -> startRows 선언 INT DEFAULT 0; -> SELECT COUNT(*) FROM AllRows INTO lastRows; -> SET startRows=0; -> WHILE startRowsINSERT INTO SecondTableRows(StudentId) SELECT (Id) FROM AllRows LIMITstartRows ,1; -> SET startRows=startRows+1; -> 종료하는 동안; -> 끝; -> //쿼리 OK, 영향을 받는 행 0개(0.22초)mysql> delimiter; CALL 명령을 사용하여 저장 프로시저를 호출합니다. 구문은 다음과 같습니다 -
귀하의StoredProcedureName을 호출합니다.위의 저장 프로시저를 호출하여 첫 번째 테이블의 모든 행을 반복합니다. 쿼리는 다음과 같습니다 -
mysql> 호출 Sp_AllRowsOfATable();쿼리 OK, 영향을 받는 행 1개(0.61초)저장 프로시저를 호출한 후 두 번째 테이블에서 어떤 일이 발생했는지 확인해 보겠습니다. 쿼리는 다음과 같습니다 -
mysql> SecondTableRows에서 StudentId 선택;출력
+-----------+| 학생 ID |+-----------+| 1 || 100 || 300 || 400 |+-----------+4행 세트(0.00초)