[오라클 PL/SQL] PL/SQL 명시적 커서(Cursor) 사용 방법
- Database(데이터베이스)/Oracle
- 2019. 12. 3. 01:00
안녕하세요.
오늘은 오라클 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; |
실행 결과
위와 같이 SCHOOL_NO가 “1” 인 학생들이 알맞게 출력된 모습을 확인하실 수 있습니다.
감사합니다~~
'Database(데이터베이스) > Oracle' 카테고리의 다른 글
[오라클 SQL] 오라클 PIVOT 절을 이용하여 로우를 컬럼으로 전환(변환)하기 (0) | 2019.12.06 |
---|---|
[오라클 PL/SQL] PL/SQL 커서(Cursor) FOR문으로 생성하기 (0) | 2019.12.04 |
[오라클 PL/SQL] PL/SQL 커서(Cursor)란? (0) | 2019.12.02 |
[오라클 PL/SQL] PL/SQL 예외처리 SQLCODE, SQLERRM 이용하여 예외 처리 하기 (0) | 2019.12.01 |
[오라클 PL/SQL] PL/SQL 예외처리 하는 방법 (0) | 2019.11.30 |
이 글을 공유하기