PL/SQL 패키지와 트리거

- 패키지 : 오라클에서는 PL/SQL의 저장 프로시저와 함수를 그룹화하기 위하여 패키지를 제공한다.

- 트리거 : 어떤 이벤트가 발생하면(특정 테이블이 변경되면) 이를 이벤트로 다른 테이블이 변경되도록 하는 트리거를 제공한다.


1. 패키지의 형식과 출력


1) 패키지의 형식


[ 형식 ]

CREATE [OR REPLACE] PACKAGE package_name

IS

PROCEDURE procedure_name1;

PROCEDURE procedure_name2;

END;

/


CREATE [OR REPLACE] PACKAGE BODY package_name

IS

PROCEDURE procedure_name1;

IS

...

END;

END;

/


- 몸체부(BODY) 내에서는 여러가지 프로시저나 함수를 정의한다.

- 명세부에는 BODY에 정의한 함수들을 선언해 놓는다.


패키지 내의 정의된 프로시저나 함수를 호출하는 방법


EXCUTE [패키지명][프로시저명]




2) 출력을 위한 DBMS_OUTPUT 패키지


오라클을 설치하면 제공해주는 패키지들이 설치된다. 이런 패키지는 오라클에서 제공하는 프로시저와 함수들을 관련된 것끼리 묶어서 집합으로 제공된다.


DESC DBMS_OUTPUT



DBMS_OUT 패키지는 PL/SQL에서 입력을 받거나 어떤 처리에 대한 겨로가를 화면에 출력할 때 사용되는 프로시저나 함수를 제공한다.


※ DBMS_OUT 패키지의 프로시저


DISABLE : 화면에 문자열을 출력하는 모드를 해제한다.

ENAME : 화면에 문자열을 출력하는 모드를 설정한다.

GET_LINE/GET_LINES : 현재 라인에서 입력한 값을 읽어간다.

NEW_LINE : GET_LINE에서 읽혀진 행의 다음 라인을 읽는다.

PUT/PUTLINE : 주어진 데이터를 화면에 출력한다.




2. 트리거


1) 트리거란?


- 오라클에서 트리거는 어떤 이벤트가 발생하여 특정 테이블이 변경되면 이를 이벤트로 다른 테이블이 자동으로 변경되게 하는 것이다.

- 트리거는 데이터베이스가 미리 정해 놓은 조건에 만족하거나 어떤 동작이 수행되면 자동적으로 수행되는 동작을 말한다.

- 트리거는 사용자가 EXECUTE 명령어로 호출하는 저장 프로시저와 달리, 사용자가 직접 실행할 수 고 특정 동작을 이벤트로만 실행되는 프로시저의 일종이다.


[ 형식 ]

CREATE TRIGGER trigger_name

timing [BEFORE|AFTER] event [INSERT|UPDATE|DELETE]

ON table_name

[FOR EACH ROW]

[WHEN conditions]

BEGIN

statement

END



1) 트리거의 타이밍

BEFORE : INSERT, UPDATE, DELETE문이 실행될 때 BEGIN~END 사이의 문장을 먼저 실행.

AFTER : INSERT, UPDATE, DELETE문이 실행되고 나면 BEGIN~END 사이의 문장을 다음에 실행.


2) 트리거의 이벤트

어떤 DML(INSERT, UPDATE, DELETE)을 실행시켰을 때 발생할 지 결정


3) 트리거의 몸체

해당 타이밍에 해당 이벤트가 발생할 때 실행될 로직. BEGIN~END 사이에 기술


4) 트리거의 유형

FOR EACH ROW: 행 레벨 트리거. 생략하면 문장 레벨 트리거.


행 레벨 트리거 : DML문에 의해 여러 개의 행이 변경된다면 각 행이 변경될 때마다 트리거 발생.

문장 레벨 트리거 : 트리거가 설정된 테이블에 대해 DML문을 실행할 때 트리거를 단 한 번 발생.


CREATE OR REPLACE TRIGGER TRG_01

AFTER INSERT

ON EMP01

BEGIN

DBMS_OUTPUT.PUT_LINE('신입 사원이 입사했습니다.');

END;

/














Posted by netyhobby
,