상세 컨텐츠

본문 제목

PL/SQL 커서(cursor)

Database/Oracle

by somiyuralove 2019. 3. 13. 13:36

본문

커서란 특정 SQL 문장을 처리한 결과를 담고 있는 영역(PRIVATE SQL이라는 메모리 영역)을 가르키는 일종의 포인터로, 커서를 사용하면 처리된 SQL 문장의 결과 집합에 접근할 수 있습니다.


SQL문은 임의의 SQL 문이 처리된 결과의 로우수는 하나 이상인데, 개별로우에 순차적으로 접근할려고 하려면 커서를 사용하면 됩니다.


커서의 종류에는 암시적(묵시적)커서 (implicit cursor)와 명시적커서(explicit cursor)가 있습니다.


암시적커서(implicit cursor)란 오라클 내부에서 자동으로 생성되어 사용되는 커서로 PL/SQL 블록에서 실행하는 SQL문장이 실행 될 때마다 자동으로 만들어져 사용됩니다.


명시적커서(explicit cursor)는 개발자가 직접 지정해서 사용하는 사용자 지정 커서입니다.


암시적커서든 명시적 커서든 라이프사이클이 존재합니다.

커서 열기(open) -> 패치(patch) -> 커서 닫기(close)로 진행됩니다.


암시적커서는 오라클 내부에서 자동으로 생성되기 때문에 일단 관심에서 제외해두고 명시적커서에 대해서 알아보도록 하겠습니다.


명시적커서는 먼저 사용할 커서를 선언부에 선언을 하여야합니다.

1. 커서선언

CURSOR 커서명[(매개변수1, 매개변수2,...)]

IS

SELECT 문장;

2. 커서열기

OPEN 커서명 [(매개변수1, 매개변수2....)]

3. 커서사용(패치)

반복문을 사용해서 개별로우에 접근

LOOP

FETCH 커서명 INTO 변수1, 변수2,...;

EXIT WHEN 커서명%NOTFOUND;

END LOOP;

4. 커서닫기

패치 작업이 끝나고 반복문에서 빠져 나오면 커서 사용이 모두 끝났으므로 커서를 닫음

CLOSE 커서명

관련글 더보기

댓글 영역