Notice
Recent Posts
Recent Comments
Link
투케이2K
87. (DB/데이터베이스) [ORACLE] cursor (커서) 정보 저장 메모리 공간 설명 본문
[학습 구분]
과목 : Database / 데이터베이스
[설 명]
1. cursor 는 오라클 PL/SQL 내부에서 SQL 문장을 처리하는 정보를 저장한 메모리 공간입니다
2. open 은 저장된 커서의 데이터를 가져올 때 사용합니다
3. fetch 는 저장된 데이터를 조작하고 읽어올 때 사용합니다
4. [Oracle] 코드 예시 :
DECLARE
/*
[cursor 사용해 SQL 메모리 저장 및 fetch 행 출력 실시]
1. Cursor (커서) : PL/SQL 내부에서 SQL 문장을 처리하는 정보를 저장한 메모리 공간입니다
2. Fetch (페치) : 행을 가져읍니다
3. Open : 저장된 커서의 데이터를 가져올 때 사용합니다
*/
-- [명시적 커서 선언 : cursor [이름] is {sql 문법}]
cursor create_cursor is (
select t_dept_name, t_dept_place
from test_dept
where t_dept_name like '%백제%'
);
-- [커서 실행 결과를 fetch 읽을 때 사용 할 변수 선언]
v_name test_dept.t_dept_name%type;
v_place test_dept.t_dept_place%type;
-- [커서 행 카운트를 위한 변수 선언]
M_CNT NUMBER;
BEGIN
-- [커서 open 열기 실시]
open create_cursor;
-- [커서에 저장된 결과 행이 여러 개인 경우 반복문을 돌려서 출력 실시]
M_CNT := 1; -- 결과 행 카운트 변수 초기값 지정
loop
-- [fetch 를 사용해서 변수 지정 및 출력 실시]
fetch create_cursor into v_name, v_place;
-- [커서에서 더이상 읽을 행이 없는 경우 종료 실시]
exit when create_cursor%notfound;
-- [읽은 행 결과 출력 실시]
DBMS_OUTPUT.PUT_LINE('=============================');
DBMS_OUTPUT.PUT_LINE('카운트 : ' || M_CNT);
DBMS_OUTPUT.PUT_LINE('v_name : ' || v_name);
DBMS_OUTPUT.PUT_LINE('v_place : ' || v_place);
DBMS_OUTPUT.PUT_LINE('=============================');
-- [결과행 읽은 카운트 증가 실시]
M_CNT := M_CNT + 1;
end loop;
-- [커서 오픈 종료]
close create_cursor;
END;
/
반응형
'DataBase' 카테고리의 다른 글
89. (DB/데이터베이스) [ORACLE] grouping sets 그룹 함수 설명 (0) | 2022.12.10 |
---|---|
88. (DB/데이터베이스) [ORACLE] REGEXP_SUBSTR 정규식 사용해 특정 문자열 분리 함수 설명 (0) | 2022.12.10 |
86. (DB/데이터베이스) [ORACLE] regexp_like 정규식 사용해 특정 패턴 포함 확인 함수 설명 (0) | 2022.12.10 |
85. (DB/데이터베이스) [ORACLE] regexp_count 정규식 패턴 사용해 특정 문자 개수 확인 함수 설명 (0) | 2022.12.10 |
84. (DB/데이터베이스) [ORACLE] WITH 임시 가상 테이블 생성 설명 (0) | 2022.12.10 |
Comments