▶ CURSOR
select 문으로 읽어들인 record를 cursor에 담아 for loop 등에서 사용한다
커서란 특정 SQL 문장을 처리한 결과를 담고있는 메모리 영역을 가리키는 일종의 포인터이다
대부분의 SQL문 결과 ROW는 여러 개인데 커서를 사용하면 이 ROW에 순차적으로 접근이 가능하다
커서의 종류에는 묵시적 커서와 명시적 커서가 있다
묵시적 커서는 오라클 내부에서 자동으로 생성되어 SQL문장이 실행될때마다 자동으로 만들어져 실행되는 커서이고,
명시적 커서는 사용자가 직접 정의해서 사용하는 커서를 말한다
커서를 드는 단계
▷ 커서를 만드는 단계
크게 커서 선언 -> 커서 열기 -> 패치 단계에서 커서 사용 -> 커서 닫기
https://coding-factory.tistory.com/455
▷ 기본 구문
FOR record IN cursor_name
LOOP
처리구문 .. ;
END LOOP;
* for의 변수는 declare에서 따로 선언하지 않아도 된다
BEGIN
FOR r_student IN(
SELECT name, grade FROM t_student
ORDER BY grade DESC
)
LOOP -- 20명의 정보를 담은 게 r_student 꺼내려면 loop, CURSOR 객체에 대해서 LOOP 가 돌아간다
DBMS_OUTPUT.PUT_LINE(r_student.name || ' : ' || r.student.grade);
END LOOP;
END;
/
▷ cursor 선언
DECLARE
CURSOR c_student
IS
SELECT name, grade FROM t_student
ORDER BY grade DESC;
BEGIN
FOR r_student IN c_student -- c_student 하나하나의 record를 가져와서 담고 LOOP 돌린다
LOOP -- cursor 객체에 대해 loop 돌아간다
DBMS_OUTPUT.PUT_LINE(r_student.name || ' : ' || r_student.grade);
END;
/
'database > Oracle' 카테고리의 다른 글
[Oracle] PL/SQL_subprogram : function (0) | 2022.09.05 |
---|---|
[Oracle] PL/SQL_subprogram : procedure (0) | 2022.09.05 |
[Oracle] PL/SQL_control (0) | 2022.09.05 |
[Oracle] PL/SQL_variable (0) | 2022.09.05 |
[Oracle] constraint 정리 (0) | 2022.09.04 |