PROCEDURE 와 FUNCTION

인삼주·2023년 5월 3일
0

DB 모델링과 OracleSQL

목록 보기
12/16

PROCEDURE 와 FUNCTION

  1. 익명 블록
  • PL/SQL을 구성하는 기본 구조
  • 선언부/실행부로 구성

[구조]

DECLARE
	선연영역 - 변수, 상수, 커서 선언
	
BEGIN
	실행영역
	   :
[EXCEPTION
	예외처리부
]
END;

1) 변수 선언 및 사용
변수는 스칼라변수, 바인딩변수, 참조형 변수가 존재
[사용형식]

변수명 [CONSTANT] 타입명|참조형 [:=초기값];

타입은 오라클에서 사용되는 모든 타입 사용
참조형 : 열참조와 행참조
열참조 : 테이블명,열이름%TYPE => 해당 테이블의 해당열과 같은 타입과 같은 크기로 변수선언
행참조 : 테이블명%ROWTYPE => 해당 테이블의 한 행과 같은 타입으로 변수선언

2) 커서

  • SELECT 문의 결과집합
  • PL/SQL의 BEGIN블록에서 SELECT문은
SELECT 컬럼명 INTO 변수명
 FROM 테이블명 [WHERE 절]

로 구성되어 SELECT 문의 결과가 1행 이상인 경우 처리가 불가능함
이를 해결하기 위한 방법으로 커서가 제공됨

  • 커서는 묵시적 커서와 명시적 커서가 있으며 묵시적 커서는 SELECT문의 결과 집합으로 이름이 부여되지 않은 커서로 항상 닫혀있어 개발자가 커서 내부로 접근할 수 없다.

[커서 선언]

CURSOR 커서명 IS
	SELECT 문;
  • 커서의 사용은
    OPEN => FATCH => CLOSE 단계로 사용해야하며 FETCH 문은 보통 반복문 내부에 위치함

2.함수(FUNCTION)

  • 반환 값이 있는 프로시져
    [사용형식]
CREATE OR REPLACE FUNCTION 함수명(
  매개변수명[IN|OUT|INOUT]타입,
     .
    .
  매개변수명[IN|OUT|INOUT]타입)
  RETURN 타입
 IS|AS
  선언부;
 BEGIN
  실행부;
  RETURN 값;
  
  [EXCEPTION
     예외처리;
  1. TRIGGER
  • 특정 테이블에서 발생된 이벤트에 의하여 수행해야할 명령을 가진 특수 프로시져를 트리거라 함
  • 문장단위 트리거와 행단위 트리거로 구분

문장단위 트리거

  • 이벤트 발생에 의해 오직 한번만 수행되는 트리거

행단위 트리거

  • 이벤트 발생에 의한 결과내의 각 행마다 수행되는 트리거

[사용형식]

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
    :

0개의 댓글