ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DataBase] PL/SQL 프로시저, 함수, 트리거
    CSE/DataBase 2015. 6. 12. 16:01
    프로시저

     개념: 매개 변수를 받을 수 있고, 반복해서 사용할 수 있는 이름이 있는 PL/SQL 블록

     용도: 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL블록을 DB에 저장하기 위해 생성

     

     - 저장 프로시저(함수)를 사용하는 이유

      정보 캡슐화

      기능의 재사용

      트랜잭션 제어 

      DB 내에서 미리 컴파일 되어 저장되므로 필요할 때마다 매번 다시 변환해야 하는 SQL 문 보다 빠르게 실행

      저장 프로시저에서 발생하는 문법 오류는 실행 시간이 아닌 컴파일 때 바로 잡을 수 있음

     

     형식

      CREATE [OR REPLACE] PROCEDURE'프로시저 명'

      (IN argument

       OUT argument

       IN OUT argument)

      

      IS

       [변수 선언]

      

      BEGIN -- 필수

       [PL/SQL Block]

      

      [EXCEPTION]

     

      END; 

     


     특징

      - 실행 환경과 프로그램 사이에 값을 주고 받는 역할

      - 블록 안에서의 변수와 똑같이 일시적으로 값을 저장하는 역할

     

     

    함수

     개념: 매개 변수를 받을 수 있고, 반복해서 사용할 수 있는 이름이 있는 PL/SQL 블록

     용도: 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL블록을 DB에 저장하기 위해 생성

     

     - 프로시저와의 차이점 및 특징

      결과값 리턴

      대부분 구성이 프로시저와 유사하지만, IN 패러미터만 사용 가능

      리턴될 값의 데이터 타입을 RETURN 문에 선언 

      PL/SQL블록 내에서 RETURN문을 통해서 반드시 값을 반환해야 함

     

     형식

      CREATE [OR REPLACE] FUNCTION '함수 명'

       [(argument...)]

      

      RETURN datatype

       -- datatype은 반환되는 값의 datatype

     

      IS

       [변수 선언 부분]

     

      BEGIN

     

      END;  

     

     

     

    트리거

     DB에 특정한 변경이 가해졌을 때 DBMS가 이에 대응해서 자동적으로 호출하는 일종의 프로시저

     프로시저와 함수는 그 실행이 외부적인 실행 명령에 의해 이루어지는데 반해, 트리거의 실행은 트리거링 사건(Triggering Event)에 의해 내부적으로 이루어짐

     

     트리거를 일으키는 사건(event): DB 테이블에 DML문이 발생할 때

     

     INSERT, UPDATE, DELETE문의 사용에 사건을 정의할 수 있으며 이들을 실행할 때 정의된 트리거도 자동 실행

     

     테이블과 별도로 데이터베이스에 저장

     

     뷰에 대해서가 아니라 테이블에 관해서만 정의

     

     - 트리거 구성

      사건(event): 트리거를 가동

      조건(condition): 트리거 수행 여부 검사

      동작(action): 트리거가 수행될 때 일어나는 일

     

     형식

     

     

     

      CREATE [OR REPLACE] TRIGGER '트리거 명'

      BEFORE | AFTER trigger_event ON '테이블 명'

      [FOR EACH ROW]

      [WHEN (condition)]

      PL/SQL block

     

     * trigger event: INSERT, UPDATE, DELETE 중 한 개 이상

     

     

    트리거의 용도

     - 테이블 생성시 참조 무결성과 데이터 무결성 그밖의 다른 제약 조건으로 정의할 수 없는 복잡한 요구사항에 대한 제약조건을 생성

     - 테이블의 데이터에 생기는 작업을 감시, 보안할 수 있다.

     - 테이블에 생기는 변화에 따라 필요한 다른 프로그램을 실행 시킬 수 있다.

     

     


    'CSE > DataBase' 카테고리의 다른 글

    [DataBase] PL/SQL 이란  (0) 2015.06.12
    [DataBase] Oracle에 Excel 파일 Import  (0) 2015.06.12

    댓글

Designed by Tistory.