Loading...
MySQL 9.5 Reference Manual 9.5의 15.6.6 Cursors의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
15.6.6.1 Cursor CLOSE Statement 15.6.6.2 Cursor DECLARE Statement 15.6.6.3 Cursor FETCH Statement 15.6.6.4 Cursor OPEN Statement 15.6.6.5 Restrictions on Server-Side Cursors
MySQL은 저장 프로그램 내부에서 커서를 지원합니다. 그 구문은 임베디드 SQL과 동일합니다. 커서는 다음과 같은 특성을 갖습니다:
Asensitive: 서버는 결과 테이블의 복사본을 만들 수도 있고 만들지 않을 수도 있습니다.
Read only: 업데이트할 수 없습니다.
Nonscrollable: 한 방향으로만 순회할 수 있고 행을 건너뛸 수 없습니다.
커서 선언은 핸들러 선언보다 앞에, 그리고 변수 및 조건 선언 뒤에 나와야 합니다.
예:
1CREATE PROCEDURE curdemo() 2BEGIN 3 DECLARE done INT DEFAULT FALSE; 4 DECLARE a CHAR(16); 5 DECLARE b, c INT; 6 DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1; 7 DECLARE cur2 CURSOR FOR SELECT i FROM test.t2; 8 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 9 10 OPEN cur1; 11 OPEN cur2; 12 13 read_loop: LOOP 14 FETCH cur1 INTO a, b; 15 FETCH cur2 INTO c; 16 IF done THEN 17 LEAVE read_loop; 18 END IF; 19 IF b < c THEN 20 INSERT INTO test.t3 VALUES (a,b); 21 ELSE 22 INSERT INTO test.t3 VALUES (a,c); 23 END IF; 24 END LOOP; 25 26 CLOSE cur1; 27 CLOSE cur2; 28END;
15.6.5 Flow Control Statements
15.6.7 Condition Handling