차근차근 개발자 되기

Oracle

34일차: Oracle – 저장 함수/커서/패키지/트리거 2021.07.30

wellow 2021. 7. 30. 23:01

 

목차

1.     저장 함수

2.     커서

3.     패키지

4.     트리거

 

 

1. 저장 함수 

 

1) 저장 함수 정의

- 저장 프로시저와 거의 비슷하나 실행 후 결과 값을 반환(return) 한다는 점이 다르다. ‘사용자 정의 함수’ 라고도 부른다.

 

2) 저장 함수 기본 형식

CREATE [OR REPLACE ] FUNCTION function_name

( argument1 [mode] data_taye,

  argument2 [mode] data_taye . . .

)

IS

RETURN data_type;

BEGIN

statement1;

statement2;

RETURN variable_name;

END;

 

3) 저장 함수 생성과 호출

- 프로시저를 만들 때에는 PROCEDURE라고 기술하지만, 함수를 만들 때에는 FUNCTION이라고 기술한다.

- 결과를 되돌려 받기 위해 함수가 되돌려 받게 되는 자료형과 되돌려 받을 값을 기술해야 한다.

- EXECUTE :varable_name := function_name(argument_list);

 

2. 커서                      

- 두 개 이상의 데이터를 처리하는 기능

 

 

3. 패키지                

 

- 패키지: 프로시저 + 함수

 

형식

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;

/                                           -> 패키지 바디

 

• 실행

EXECUTE [패키지명].[프로시저명]

 

4. 트리거 

 

1) 트리거의 개념

- 트리거(Trigger)란 영어로 ‘방아쇠’라는 뜻인데, 방아쇠를 당기면 그로 인해 총기 내부에서 알아서 일련의 작업을 실행하고 총알이 날아간다. 이처럼 데이터베이스에서 트리거(Trigger)는 특정 테이블에 INSERT, DELETE, UPDATE 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램이다. 즉, 사용자가 직접 호출하는 것이 아니라, 데이터베이스에서 자동적으로 호출된다.

 

2) 트리거의 타이밍

[BEFORE] 타이밍은 어떤 테이블에 INSERT, UPDATE, DELETE 문이 실행될 때 해당 문장이 실행되기 전에 트리거가 가지고 있는 BEGIN ~ END 사이의 문장을 실행한다.

 

[AFTER] 타이밍은 INSERT, UPDATE, DELETE 문이 실행되고 난 후에 트리거가 가지고 있는 BEGIN ~ END 사이의 문장을 실행한다.

 

3) 트리거의 이벤트

사용자가 어떤 DML(INSERT, UPDATE, DELETE)문을 실행했을 때 트리거를 발생시킬 것인지를 결정한다.

 

4) 트리거의 몸체

해당 타이밍에 해당 이벤트가 발생하게 되면 실행될 기본 로직이 포함되는 부분으로 BEGIN ~ END에 기술한다.

 

5) 트리거의 유형

트리거의 유형은 FOR EACH ROW에 의해 문장 레벨 트리거와 행 레벨 트리거로 나눈다.

FOR EACH ROW가 생략되면 문장 레벨 트리거이고 행 레벨 트리거를 정의하고자 할 때에는 반드시 FOR EACH ROW를 기술해야만 한다.