1> PL/SQL 커서?
- SQL 문장 실행시 마다 처리를 위해 메모리 공간(Cursor) 사용
- 묵시적 커서 : PL/SQL 실행 시 자동으로 SQL 커서 생성 및 자동 Clean 작업 수행
- 명시적 커서 : 사용자가 정의한 커서를 선언, 별도 Clean 작업 수행 필요
2> 묵시적 커서
SQL%ROWCOUNT : 커서에서 실행한 총 행 개수 반환
SQL%FOUND : 커서에서 수행할 데이터가 있으면 TRUE, 없으면 FALSE 반환
SQL%NOTFOUND : 커서에서 수행할 데이터가 없으면 TRUE, 있으면 FALSE 반환
SQL%ISOPEN : 메모리에 OPEN 되어있으면 TRUE, 아니면 FALSE 반환
3> 명시적 커서
사용자가 생성 후 사용하는 SQL 커서 (여러 개 행 처리)
커서 선언 -> 커서 오픈 -> 데이터 추출 -> 사용 종료
커서 속성 변수 : ‘커서명%’ 을 커서 속성 변수의 접두어를 붙여 사용
<문법>
CURSOR 커서명
IS
커서에서 내용 조회하는 서브쿼리
커서명 : 유일한 명칭
서브쿼리 : 데이터 조회 SELECT 쿼리 기술
- 커서열기 (OPEN)
OPEN 커서명;
- 데이터 Read, 변수 할당 (FETCH)
FETCH 커서명 INTO 변수;
- 커서 닫기 (Close) : 작업 끝내고 메모리 공간 반환 (정리)
CLOSE 커서명;
4> PL/SQL Oracle Exception (예외처리)
- 컴파일 에러 : PL/SQL 블록이 PARSE 중 오타 등으로 에러 발생
- 런타임 에러 : PL/SQL 블록 실행 동안 발생되는 에러 ( = 예외 Exception)
- Exception 종류 : 오라클 예외 (오라클 정의 된 자동 발생) , 사용자 정의 예외
- 오라클 예외 예시
ACCESS_INTO_NULL (ORA-06530) : 정의되지 않은 오브젝트 속성에 값 할당하고자 할 때 발생
CASE_NOT_FOUND (ORA-06592) : CASE 문의 WHEN 절에 해당되는 조건과 ELSE 절 없을 경우 발생
CURSOR_ALREADY_OPEN (ORA-06511) : 이미 열린 커서를 열기 시도 할 때 발생
DUP_VAL_ON_INDEX (ORA-00001) : 인덱스에 중복 값 입력 할 때 발생
INVAILD_NUMBER (ORA-01722) : 문자를 숫자로 변환 시 발생
TOO_MANY_ROWS (ORA-01422) : SELECT 문이 2 건 이상의 행을 리턴할 경우 발생
ZERO_DIVIDE (ORA-01476) : 0으로 나눌 때 발생 예외
PL/SQL 변수와 제어문 (IF, CASE 같은 조건문과 반복문,(LOOP, FOR, WHILE) 등에 대해 정리는
아래 참고하시기 바랍니다.!!!
[참고 글]
[IT/Data] - [PL/SQL 개념] 오라클 프로시저 PL/SQL 기본 정리
[IT/Data] - [PL/SQL 개념] 오라클 PL/SQL PROCEDURE (프로시저), FUNCTION 설명
[IT/Data] - [PL/SQL개념] 오라클 프로시저 개념 정리 – (2) PL/SQL 변수, 제어문
'IT ▶ > Database' 카테고리의 다른 글
[SQL PL] PL/SQL 변수제어, 흐름제어 (IF, LOOP, REPEAT) (0) | 2020.02.08 |
---|---|
[PL/SQL 개념] 오라클 PL/SQL PROCEDURE (프로시저), FUNCTION 설명 (0) | 2020.01.11 |
[PL/SQL개념] 오라클 프로시저 개념 정리 – (2) PL/SQL 변수, 제어문 (0) | 2020.01.11 |
[PL/SQL 개념] 오라클 프로시저 PL/SQL 기본 정리 (0) | 2019.12.21 |
[데이터베이스 기초] 오라클 SQL 기본 개념 (SELECT, ORDER BY, NVL) (0) | 2019.12.15 |