영보의 SystemOut.log

[Oracle] PL/SQL- Cursor(커서)와 예제 본문

Database/Oracle

[Oracle] PL/SQL- Cursor(커서)와 예제

영보로그 2020. 11. 11. 15:17
반응형

 개념

 

# CURSOR

 - 오라클 서버는 SQL문을 실행시마다 처리를 위한 메모리 공간을 사용한다. 즉, 사용자가 요청하는 데이터를 데이터베이스 버퍼 캐시에서 커서로 복사해 온 후 커서에서 원하는 데이터를 추출하여 후속 작업을 하게 된다는 뜻이다. 

Cursor 
   여러개 Row(Record)를 저장할 수 있는 공간 → ResultSet

처리 
   CURSOR 
  자바 (ResultSet) 

커서 사용하는 방법 


    1. 커서 등록 
        Cursor cur_name IS  
         SELECT * FROM emp; 
    2. open  
    3. fetch  
    4. close

 


    

 

 예제

 

# 코드 위에 삽입

1
set serveroutput on;
cs

 - 다음 코드를 쿼리문 위에 작성해주어야 출력하고자 하는 내용을 볼 수 있다.

 

 

 

# LOOP문 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DECLARE
 vemp emp%ROWTYPE;
 CURSOR cur IS 
    SELECT * FROM emp;
BEGIN
 OPEN cur;
 DBMS_OUTPUT.PUT_LINE('====결과====');
 LOOP 
  FETCH cur INTO vemp;
  EXIT WHEN cur%NOTFOUND;
  DBMS_OUTPUT.PUT_LINE('사번:'||vemp.empno);
  DBMS_OUTPUT.PUT_LINE('이름:'||vemp.ename);
  DBMS_OUTPUT.PUT_LINE('직위:'||vemp.job);
  DBMS_OUTPUT.PUT_LINE('입사일:'||vemp.hiredate);
  DBMS_OUTPUT.PUT_LINE('급여:'||vemp.sal);
  END LOOP;
  CLOSE cur;
END;
/
cs

 

 

 

 

# FOR문 사용 

1
2
3
4
5
6
7
8
9
10
DECLARE
 vdept dept%ROWTYPE;
 CURSOR cur IS
    SELECT * FROM dept;
BEGIN
    FOR dept IN cur LOOP
     DBMS_OUTPUT.PUT_LINE(vdept.deptno||' '||vdept.dname||' '||vdept.loc);
    END LOOP;
END;
/
cs

 - LOOP문보다 FOR문을 사용하는게 훨씬 간단한걸 볼 수 있다

반응형