declare V_ID BIGINT; # 조회된 테이블의 ID
# 목록을 조회
declare cur1 cursor for
select ID
from table_name;
### CURSOR을 돌리기 위한변수.
### 데이터가 없으면 m_Done에 1을 삽입
DECLARE CONTINUE HANDLER FOR NOT FOUND SET M_DONE=1;
# 커서를 연다.
OPEN cur1;
# LOOP를 돌림. 앞에 curRepeat 은 일종의 변수로 만약 에러가 나서
# 반복문을 종료하고 싶다면 'LEAVE cuRepeat'를 추가하면 된다.
curRepeat : REPEAT
# 정보가 있다면 로드
FETCH NEXT FROM cur1 INTO V_ID;
# 조회값이 더 있는지 확인
IF NOT M_DONE THEN
.... 데이터 처리
....
....
## 에러가 발생되면 반복문 종료
## 아래와 같은 처리를 해두지 않으면 SQL에러가 나도 무시하고 계속 실행한다.
IF M_ERR > 0 THEN
LEAVE cuRepeat;
END IF;
END IF;
UNTIL M_DONE END REPEAT; # 조회값이 더 없다면 REPEAT 을 종료한다.
CLOSE cur1; # 커서 종료
# 주의사항
MYSQL에서 커서를 사용할 때에는 데이터가 없으면 자동으로 값이 들어갈 변수를 지정해 줘야한다.
. DECLARE CONTINUE HANDLER FOR NOT FOUND SET M_DONE=1; <<
'공부 > 프로그래밍' 카테고리의 다른 글
[Spring] web.xml 설정. (2) | 2017.04.18 |
---|---|
도커 docker 간단 명령어 (컨테이너/이미지 확인 삭제) (0) | 2017.04.17 |
Mysql procedure(프로시저) 에러처리 하기. (0) | 2017.04.14 |
메이븐의 Dependency 가 검색이 안될때. (0) | 2017.04.13 |
[MYSQL] PL-SQL 에서 변수 안에 값 보기(여러 ROW를 봐야할때) (0) | 2017.04.13 |
댓글