Programming/SQL

[ORACLE] 서브 프로그램 (프로시저, 함수, 트리거, 패키지)

몽땅마니아(MDD) 2022. 3. 2. 21:20

서브 프로그램

여러번 사용할 목적으로 이름을 저장해 오라클에 저장해두는 PL/SQL프로그램

한 번 사용할 목적이면 익명블록(anonymous block)이 낫다.

프로시저

특정 처리 작업을 수행하기 위한 서브프로그램으로 SQL문에서는 사용 불가능

CREATE OR REPLACE PROCEDURE 프로시저명[(파라미터 타입)]
IS|AS
-- 로컬변수 선언부
BEGIN
-- 실행부
EXCEPTION
-- 예외 처리부
END [프로시저명]

--프로시저 실행(SQL문에서 불가능)
EXEC/EXECUTE 프로시저명[(매개변수..)]; 

함수

특정 연산을 거친 결과 값을 반환하는 프로그램으로 SQL문에서 사용가 능

CREATE [OR REPLACE] FUNCTION 함수명 [(파라미터 타입, ...)]
RETURN 반환값타입
IS|AS
-- 로컬변수 선언부
BEGIN
-- 실행부
RETURN 리턴할 변수
EXCEPTION
예외 처리부
END [함수명];

--함수 실행(SQL문에서도 가능)
SELECT 함수명(매개변수..) FROM DUAL;  /*함수 실행*/

트리거

특정 이벤트가 발생할 때, 자동으로 연달아 수행할 기능을 구현하는데에 사용

CREATE OR REPLACE TRIGGER 트리거명
BEFORE|AFTER
INSERT|UPDATE|DELETE ON 테이블명
FOR EACH ROW WHEN 조건식

DECLARE
--선언부
BEGIN
--실행부
EXCEPTION
--예외처리부
END [트리거명];

패키지

저장 서브 프로그램을 그룹화 하는데에 사용

CREATE [OR REPLACE] PACKAGE 패키지명
IS|AS
--선언부
BEGIN
--다양한 서브프로그램 선언 
[서브프로그램종류 서브프로그램명(파라미터)]
END [패키지명];

CREATE OR REPLACE PACKAGE BODY 패키지명
IS|AS
--패키지에 명세한 서브프로그램 정의

--패키지 실행
패키지명.격체명;