본문 바로가기
공부/프로그래밍

Mysql procedure(프로시저) CURSOR(커서) 실행하기.

by demonic_ 2017. 4. 14.
반응형



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; << 



반응형

댓글