Cursor를 사용하려면 선언을 해줘야 한다.
cursor는 일종의 변수이다 (type이 커서인)
Declare => Declare Continue Handler => OPEN => Fetch => CLose
Declare <cursor-name> CURSOR FOR
select...
Declare Continue Handler
For Not Fount SET <end-flag> := True;
OPEN <cursor-name>
<cursor-loop-var>: LOOP
Fetch <cursor-name> into <var-name>, ...;
IF <end-flag> THEN
LEAVE <cursor-loop-var>
END IF
LOOP <cursor-loop var>;
CLOSE <cursor-name>;
FETCH 를 하면 각각 가져올 컬럼을 담을 변수가 필요하다.
프로시져에서 디클레어가 항상 상위에 와야한다.
디클레어는 디클레어끼리 모아두어야 한다
커서가 돌다가 더이상 자료가 없으면(not found), SET해준다.
커서를 열고close를 하지 않으면 메모리를 계속 보기 때문에 꼭 CLOSE를 해줘야 한다.
Exception Handling : 보통 insert delete등을 쓰는 프로시져는 전에 반드시 START Transaction을 건다.
START TRANSACTION
DECLARE {EXIT | CONTINUE} HANDLER FOR SQLEXCEPTION
BEGIN
-- 에러 처리 구문
ROLLBACK;
END;
-- 위에서 CONTINUE라고 선언했다면, 오류 발생해도 아래를 계속 수행
COMMIT;
Stem-and-leaf display(줄기 잎 그림)

도수 분포표와 히스토그램을 같이 볼 수 있다.
'SeSac (2021-08 ~ 2021-12) > MySQL' 카테고리의 다른 글
| MySQL - SQL 한방에 정리하기 Part 1 - DCL, DDL (0) | 2021.08.31 |
|---|---|
| MySQL 13 (마지막) - Backup & Restore (0) | 2021.08.31 |
| MySQL 10 - Stored Function & Procedure (0) | 2021.08.30 |
| MySQL 09 - 뷰와 트리거 (View, Trigger, UNION, @rownum) (0) | 2021.08.27 |
| MySQL 07 - 내장함수와 트랜잭션(Transaction) (0) | 2021.08.27 |