본문 바로가기
정보처리기사

[데이터베이스 구축] 13. 절차형SQL(프로시저,트리거,사용자정의함수)

by reve5 2022. 3. 29.

48. 데이터베이스 시스템에서 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL은?
① 트리거(trigger) ② 무결성(integrity)
③ 잠금(lock) ④ 복귀(rollback)

>> 정답 1번




https://www.youtube.com/watch?v=wVNX_BUbNp0&list=PLKpxllD6C8Cl_Ih4ZVC4t9MbrIHZ63Hk6&index=14 


절차형 SQL
분기, 반복이 가능한 모듈화(재사용가능)된 프로그램

DBMS에서 직접 실행된다

공통적인 요소
이름과 변수 정의 
시작부분과 끝부분에 항상 포함되는 요소

DECLARE
BEGIN
END

1. 프로시저
DML을 사용하여 주기적으로 진행하는 작업을 진행한다.
별도의 호출을 통해 실행한다.

DECLARE 부분 > CREATE OR PEPLACE PROCEDURE  : 프로시저 생성 
IN >입력
OUT > 아웃 설정
IS : 프로시저 내부에서 사용할 벼수나 상수 정의
BEGIN : 프로시저 시작 
분기나 반복영역, SQL로 데이터 관리, 
EXCEPTION : 예외 처리
COMMIT : 작업 결과 반영하거나 취소
END : 프로시저 정의 

EXECUTE : 정의한 프로시저 호출
= EXEC, CALL도 가능

DROP PROCEDURE > 제거


>> 

DECLARE
CREATE OR REPLACE PROCEDURE
IS
BEGIN
CONTROL : 분기, 반복
SQL : DML
EXCEPTION : 예외처리
TRANSACTION : COMMIT, ROLLBACK
END 





2. 사용자 정의 함수
호출 시 특정 값을 돌려 받을 수 있다.

DECLARE
CREATE OR REPLACE FUNCTION
IS
BEGIN
CONTROL : 분기, 반복
SQL : DML
EXCEPTION : 예외처리
RETURN : 단일값 반환
END 


프로시저는 작업의 결과를 데이터 베이스 저장
사용자 정의 함순ㄴ 작업의 결과를 호출한 쿼리문에게 전달된다.

사용방법
대부분 DML 문장 내부에서 진행됨

3. 트리거

삽입 삭제 수정 등으로 데이터베이스에 특정 변화(이벤트)가 발생하는 경우에 자동으로 실행하도록 만들어진 프로그램

DECLARE 
CREATE OR REPLACE TRIGGER
AFTER/BEFORE [EVENT] ON 테이블 명 : 이벤트 발생 전(후)에 실행
FOR EACH NOW : 이벤트가 발생한 행마다 각각 트리거 진행
BEGIN
CONTROL 분기 반복
SQL DML
EXCEPTION 예외처리
END

무결성을 유지 로그 저장에 사용한다.
자동 실행이기 때문에 COMMIT, ROLLBACK, 리턴값이 없기때문에 오류에 신경쓰기

트리거는 변화된 데이터를 각각 반영된 경우가 있기 때문에 
OLD 데이터를 사용하면 과거 내용
NEW 신규 데이터를 사용할 수 있다.

댓글