CURSOR
- 커서는 Oracle 서버에서 할당한 메모리 영역에 대한 포인터이다.
- 커서의 종류에는 묵시적 커서, 명시적 커서가 있다.
- 묵시적 커서: 오라클 내부에서 자동으로 생성되어 SQL문장이 실행될때마다 자동으로 만들어져 실행되는 커서이다.
- 명시적 커서: 사용자가 직접 정의해서 사용하는 커서이다.
CURSOR 커서이름 (변수 ..)
IS
SELECT ....
CURSOR 후에 커서이름을 설정하고 PL/SQL문에 변수를 지정한다.
그 이후 기본적인 SELECT문을 사용한다.
또한 시작할때는 OPEN 커서명 으로 실행하며 사용한 후에는 CLOSE 커서명 으로 커서를 닫는다.
예제 : CURSOR를 사용하여 EMP테이블과 DEPT 테이블을 조인시키기
-- 명시적 CURSOR로 했다.
CREATE OR REPLACE PROCEDURE CURSOREMP
IS
VEMP EMP%ROWTYPE; --EMPNO|ENAME|SAL.....
VDEPT DEPT%ROWTYPE;
CURSOR EPC IS SELECT E.EMPNO,E.ENAME,E.SAL,E.JOB,E.HIREDATE,D.DNAME,D.LOC
FROM EMP E,DEPT D --JAVA로 치면 클래스 정의
WHERE E.DEPTNO = D.DEPTNO;
BEGIN
OPEN EPC;
LOOP
FETCH EPC INTO VEMP.EMPNO,VEMP.ENAME,VEMP.SAL,VEMP.JOB,VEMP.HIREDATE,VDEPT.DNAME,VDEPT.LOC; --FETCH
DBMS_OUTPUT.put_line(VEMP.EMPNO || ' ' || VEMP.ENAME || ' ' || VEMP.SAL || ' ' || VDEPT.DNAME || ' ' ||VDEPT.LOC);
IF EPC%NOTFOUND THEN EXIT ;
END IF;
END LOOP;
CLOSE EPC;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR MESSAGE' || SQLERRM);
END CURSOREMP;
'SQL' 카테고리의 다른 글
[PL/SQL] FOR (0) | 2021.08.10 |
---|---|
[PL/SQL] RECORD (0) | 2021.08.06 |
[PL/SQL]IF, CASE (0) | 2021.08.06 |
[PL/SQL] DML(INSERT, UPDATE ,DELETE ) 연습 (0) | 2021.08.05 |
[PL/SQL] 개념, 기본문법 (0) | 2021.08.05 |