[오라클 PL/SQL] PL/SQL 명시적 커서(Cursor) 사용 방법


안녕하세요.

 

오늘은 오라클 PL/SQL에서 명시적 커서 선언하고 사용하는 방법에 대해서 예제를 통해서 알려 드리려고 합니다.

 

명시적 커서를 사용하기 위해서는 총 4단계의 작업이 필요합니다.


1. 커서 선언

2. 커서 열기

3. 패치 단계에서 커서 사용

4. 커서 닫기

 

그럼 위에서 알려드린 4가지 단계를 이용하여 실제 커서를 선언하고 사용해 보도록 하겠습니다.


 

1단계 : 커서 선언


-     묵시적 커서와 달리 명시적 커서는 사용할 커서를 선언부에 직접 정의해야 합니다.

-      


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

IS

SELECT 문장;

 

커서명은 사용자가 직접 정의하고 매개변수는 생략이 가능한데, 매개변수를 명시할 때 이들은 SELECT 문장의 WHERE 절에서 조건을 체크하는 변수로 사용됩니다.

 

2단계 : 커서 열기


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

 

3단계 : 패치 단계에서 커서 사용


LOOP

         FETCH 커서명 INTO 번수1, 변수2…;

         EXIT WHEN 커서명%NOTFOUND;

END LOOP;

 

4단계 : 커서 닫기


CLOSE 커서명;

 

그럼 이제 위의 내용들을 토대로 실제로 명시적 커서를 사용해 보도록 하겠습니다.

 

아래 STUDENT 테이블이 있습니다.



여기서 SCHOOL_NO“1” 인 학생들을 출력하는 블록을 만들어 보도록 하겠습니다.

   

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

DECLARE

    --학생명 받아들일 변수 선언

    vs_name WIN.STUDENT.SCHOOL_NO%TYPE;

    

    --커서 선언 (매개변수로, SHCOOL_NO 받기)

    CURSOR cur_stu_name(cp_school_no WIN.STUDENT.SCHOOL_NO%TYPE)

    IS

    SELECT NAME

    FROM WIN.STUDENT

    WHERE SCHOOL_NO = cp_school_no;

BEGIN

    --커서 오픈 (매개변수로 '1'  전달)

    OPEN cur_stu_name('1');

    

    --반복문을 통한 커서 패치 작업

    LOOP

        --커서 결과로 나온 로우 패치

        FETCH cur_stu_name INTO vs_name;

        

        --패치된 참조 로우가  없으면 LOOP 탈출

        EXIT WHEN cur_stu_name%NOTFOUND;

        

        --학생명 출력

        DBMS_OUTPUT.PUT_LINE(vs_name);

        

    END LOOP;

    

    --반복문 종류 커서 닫기

    CLOSE cur_stu_name;

END;

Colored by Color Scripter

cs

 

실행 결과



위와 같이 SCHOOL_NO“1” 인 학생들이 알맞게 출력된 모습을 확인하실 수 있습니다.

 

감사합니다~~

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY