본문 바로가기
IT ▶/Database

[PL/SQL 개념] PL/SQL cursor 커서, Oracle Exception 예외처리

by Jordan_ 2020. 1. 11.
728x90
반응형

 

 

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 변수, 제어문

 

 

 

728x90
반응형