커서(cursor)
SELECT문 또는 데이터 조작어 같은 SQL문을 실행했을 때 해당 SQL문을 처리하는 정보를 저장한 메모리 공간
결과 행이 몇 개이든 상관 없이 사용가능하다는 점에서 SELECT INTO과 차이
명시적 커서 (explicit cursor)
사용자가 직접 커서를 선언하고 사용하는 커서로 조회되는 행이 여러 개일 경우 효용성 극대화
명시적 커서 사용 단계
단계 | 명칭 | 설명 |
1단계 | 커서 선언 (CURSOR IS 커서이름 IS sql문) |
사용할 커서를 SQL문과 함께 선언 |
2단계 | 커서 열기 (OPEN) | 커서에 선언된 SQL실행되어 저장 실행한 SQL문에 영향을 받는 행을 active set 이라 함. |
3단계 | 커서에서 읽어온 데이터 사용 (FETCH) |
실행된 SQL문의 결과 행 정보를 하나씩 읽어 작업 수행, LOOP문 활용 가능 |
4단계 | 커서 닫기 (CLOSE 커서이름) |
커서 종료 |
명시적 커서의 선언문
DECLARE
CURSOR 커서이름 IS SQL문; --커서 선언(DECLARAION)
BEGIN
OPEN 커서이름; --커서 열기(OPEN)
FETCH 커서이름 INTO 변수 --커서로부터 읽어온 데이터사용(FETCH)
CLOSE 커서이름; --커서 닫기(CLOSE)
END;
사용 가능한 명시적 커서 속성
속성 | 설명 |
커서이름%NOTFOUND | FETCH문을 통해 추출된 행이 없으면 true, 있으면 false 반환 |
커서이름%FOUND | FETCH문을 통해 추출된 행이 있으면 true, 없으면 false 반환 |
커서이름%ROWCOUNT | 현재까지 추출된 행 수 반환 |
커서이름%ISOPEN | 커서가 열려있으면 true, 닫혀 있으면 false 반환 |
묵시적 커서 (implicit cursor)
별다른 선언 없이 SQL문을 사용했을 때 오라클에서 자동으로 선언되는 커서
사용자가 OPEN,FETCH, CLOSE를 지정하지 않음.
사용 가능한 묵시적 커서 속성
속성 | 설명 |
SQL%NOTFOUND | FETCH문을 통해 추출된 행이 없으면 true, 있으면 false 반환 |
SQL%FOUND | FETCH문을 통해 추출된 행이 있으면 true, 없으면 false 반환 |
SQL%ROWCOUNT | 현재까지 추출된 행 수 반환 |
SQL%ISOPEN | 커서가 열려있으면 true, 닫혀 있으면 false 반환 |
SELECT INTO
조회되는 데이터가 단 하나의 행일 때 사용 가능한 방식으로 명시한 각 열의 결과 값을 변수에 대입해줌
명시한 열과 INTO 절에 명시한 변수의 개수와 자료형이 일치해야 함.
-- 조회되는 데이터가 단 하나의 행일 경우에만 사용 가능
SELECT 열1, 열2, 열3,... INTO 변수1, 변수2, 변수3,...
FROM ...
'Programming > SQL' 카테고리의 다른 글
[SQL] SQLdeveloper에서 엑셀 데이터 임포트하는 법 (0) | 2022.06.14 |
---|---|
[SQL] 'ORA-01950: 테이블스페이스 'UERS'에 대한 권한이 없습니다.' 에러 해결 방법 (0) | 2022.06.14 |
[ORACLE] PL/SQL의 조건문과 반복 제어문 (IF, CASE, LOOP) (0) | 2022.03.02 |
[ORACLE] 서브 프로그램 (프로시저, 함수, 트리거, 패키지) (0) | 2022.03.02 |
SQL문 기본 문법 (작성中) (0) | 2021.12.17 |