커서(Cursor)란 ?
커서란 ?
커서란 특정 SQL 문장을 처리한 결과를 담고 있는 영역을 가리키는 일종의 포인터입니다. 커서를 사용하면 처리된 SQL 문장의 결과 집합에 접근할 수 있습니다.
커서의 종류
명시적(Explicit) 커서
: 사용자가 선언해서 생성 후 사용하는 SQL 커서, 주로 여러 개의 행을 처리하고자 할 경우 사용.묵시적(Implicit) 커서
: 오라클에서 자동으로 선언해주는 SQL 커서, 사용자는 생성 유무를 알 수 없다.
커서의 속성
커서를 open하고 나서 fetch가 발생하면 true값을 반환
- %FOUND : 할당할 레코드가 있는 경우 true 값을 반환
- %isOpen : 커서가 오픈 상태일 경우 true 값을 반환
- %NotFound : 할당할 레코드가 없는 경우 true 값을 반환
- %RowCount : 카운터 역할을 한다. 커서가 오픈됐을 경우 0, 패치가 발생할 때마다 1씩 증가한다.
커서의 처리단계(명시적 커서)
- 명시적 커서 선언 (
Cursor [커서이름]
) - 명시적 커서 오픈 (
Open [커서이름]
) - 커서에서 데이터 추출 (
Fetch [커서이름]
) - 커서 종료 (
Close [커서이름]
)
사용 예시
DECLARE
emp_id number(4);
emp_name varchar2(10);
emp_salary number(10);
CURSOR cul is
SELECT empno, ename, sal
FROM emptest1
WHERE deptno = 30;
BEGIN
OPEN CRL;
dbms_output.put_line('사번 이름 급여');
LOOP
FETCH cul INTO emp_id, emp_name, emp_salary;
EXIT WHEN cul%NotFound;
dbms_output.put_line(emp_id||' '||emp_name||' '||emp_salary);
END LOOP;
CLOSE cul;
END;
묵시적 커서 사용
속성 사용 시 SQL%NotFound, SQL%RowCount, SQL%Found, SQL%isOpen과 같이 SQL을 넣어 사용한다.
사용 예시
DECLARE
cnt1 number;
cnt2 number;
BEGIM
SELECT count(*) INTO cnt1
FROM emp
WHERE deptno = 30;
cnt2 := sql%rowcount;
dbms_output.put_line('cnt1의 값 : ' || cnt1);
dbms_output.put_line('cnt2의 값 : ' || cnt2);
end;
Author And Source
이 문제에 관하여(커서(Cursor)란 ?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ragnarok_code/커서Cursor란저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)