쌍용 강북 교육센터 국비학원 Day 33일차
Oracle PL/SQL 예외처리 (Exception)
사용자에 의해 정의되는 예외로 사용자 정의 예외에는 Exception의 선언, 호출, 수행 세 파트를 작성해야 한다.
- RAISE를 이용한 예외처리
DECLARE (선언부)
예외명 exception
(사용자가 정의하는 예외절(Exception)임을 선언한다)
BEGIN
RAISE 예외명 ;
exception
when 예외명 [OR 예외명2] then
실행문A ;
whne 예외명3 then
실행문B ;
when oterts then
실행문C ;
CURSOR (커서)
PL/SQL에서 SELECT 되어져 나오는 행의 개수가 2개 이상인 경우에는 table 타입의 변수를 사용하여 나타낼 수 있고,
또는 CURSOR 를 사용하여 나타낼 수 있다. table 타입의 변수를 사용하는 것보다 cursor를 사용하는 것이 더 편하므로 대부분 많이 사용한다.
명시적 커서 만들기
- 형식
1단계 - CURSOR의 선언(정의)
CURSOR 커서명
IS
SELECT 문 ;
2단계 - CURSOR의 OPEN
OPEN 커서명 ;
3단계 - CURSOR 의 FETCH
(FETCH 란? SELECT 되어진 결과물을 가져오는 작업을 말한다)
FETCH 커서명 INTO 변수 ;
4단계 -- CURSOR 의 CLOSE
CLOSE 커서명 ;
커서의 속성변수
커서명%ISOPEN -> 커서가 OPEN 되어진 상태인가를 체크하는 것. 만약에 커서가 OPEN 되어진 상태이라면 TRUE.
커서명%FOUND -> FETCH 된 레코드(행)이 있는지 체크하는 것. 만약에 FETCH 된 레코드(행)이 있으면 TRUE.
커서명%NOTFOUND -> FETCH 된 레코드(행)이 없는지 체크하는 것. 만약에 FETCH 된 레코드(행)이 없으면 TRUE.
커서명%ROWCOUNT -> 현재까지 FETCH 된 레코드(행)의 갯수를 반환해줌.
FOR LOOP 커서 만들기
커서의 OPEN, 커서의 FETCH, 커서의 CLOSE 가 자동적으로 발생되어지기 때문에 커서의 문장을 따로 기술할 필요가 없어지므로 더욱 간결하게 사용이 가능하다.
- 형식
FOR 변수명 (Select 되어진 행의 정보가 담기는 변수) IN 커서명 LOOP
실행문장 ;
END LOOP ;
PACKAGE (패키지)
PACKAGE (패키지)란? - 여러개의 Procedure 와 여러개의 Function 들의 묶음
1. 패키지의 선언
create or replace package 패키지명
is - (패키지에 들어오는 프로시저 또는 함수를 선언해준다.)
procedure 프로시저명 (파라미터이름 IN 파라미터타입) ;
procedure 프로시저명 (파라미터이름 IN 파라미터타입) ;
function 함수명 (파라미터이름 IN 파라미터타입) return 리턴타입 ;
end 패키지명 ;
2. 패키지의 본문 (Body) 생성하기
create or replace package body 해당패키지명
is
(Procedure 이나 Function 을 생성하듯이 본문에 넣어주면 된다)
end 패키지명 ;
3.패키지의 실행
- Procedure 실행
begin
패키지명.프로시저명 [파라미터] ;
end ;
- Function 실행
select 패키지명.함수명 (파라미터)
from dual ;
'DB > Oracle' 카테고리의 다른 글
쌍용강북교육센터 국비 학원 Day 35일차 Oracle (데이터 모델링, ERD, 정규화) (0) | 2023.02.21 |
---|---|
쌍용강북교육센터 국비 학원 Day 34일차 Oracle (Oracle INDEX, Plan) (0) | 2023.02.20 |
Oracle 시스템 테이블 명령어정리 (0) | 2023.02.16 |
쌍용강북교육센터 국비 학원 Day 32일차 Oracle (PL/SQL문, Procedure, Function, 제어문) (0) | 2023.02.16 |
쌍용강북교육센터 국비 학원 Day 31일차 Oracle (ALTER, Foreign key 옵션) (0) | 2023.02.15 |