PROCEDURE 와 FUNCTION
- 익명 블록
- PL/SQL을 구성하는 기본 구조
- 선언부/실행부로 구성
[구조]
DECLARE
선연영역 - 변수, 상수, 커서 선언
BEGIN
실행영역
:
[EXCEPTION
예외처리부
]
END;
1) 변수 선언 및 사용
변수는 스칼라변수, 바인딩변수, 참조형 변수가 존재
[사용형식]
변수명 [CONSTANT] 타입명|참조형 [:=초기값];
타입은 오라클에서 사용되는 모든 타입 사용
참조형 : 열참조와 행참조
열참조 : 테이블명,열이름%TYPE => 해당 테이블의 해당열과 같은 타입과 같은 크기로 변수선언
행참조 : 테이블명%ROWTYPE => 해당 테이블의 한 행과 같은 타입으로 변수선언
2) 커서
SELECT 컬럼명 INTO 변수명
FROM 테이블명 [WHERE 절]
로 구성되어 SELECT 문의 결과가 1행 이상인 경우 처리가 불가능함
이를 해결하기 위한 방법으로 커서가 제공됨
[커서 선언]
CURSOR 커서명 IS
SELECT 문;
2.함수(FUNCTION)
CREATE OR REPLACE FUNCTION 함수명(
매개변수명[IN|OUT|INOUT]타입,
.
.
매개변수명[IN|OUT|INOUT]타입)
RETURN 타입
IS|AS
선언부;
BEGIN
실행부;
RETURN 값;
[EXCEPTION
예외처리;
문장단위 트리거
행단위 트리거
[사용형식]
CREATE OR REPLACE TRIGGER 트리거명
AFTER|BEFORE INSERT|UPDATE|DELETE ON 테이블명
[FOR EACH ROW]
[WHEN 조건]
[DECLARE]
선언부;
BEGIN
트리거 본문;
END;
AFTER|BEFORE : 트리거 TIMMING
INSERT|UPDATE|DELETE : 트리거 이벤트로 조합 사용 가능
ex) UPDATE OR INSERT, INSERT OR DELETE,
INSERT OR UPDATE OR DELETE
FOR EACH ROW : 생략하면 문장단위 트리거
WHEN 조건 : 트리거 발생 이벤트시 좀 더 구체적인 조건 제시 (FOR EACH ROW 에만 사용 가능)
ex)
CREATE OR REPLACE TRIGGER tg_change_cart
AFTER INSERT ON CART
FOR EACH ROW
WHEN CART_QTY>=5
: