방구석 상상코딩

19. 절차형 SQL 활용하기 본문

정보처리기사 실기

19. 절차형 SQL 활용하기

구석탱 2022. 1. 23. 19:08

절차형 SQL

1. 프로시저 (Procedure)

일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합

CREATE [OR REPLACE] PROCEDURE 프로시저_명
(파라미터_명 [IN | OUT | INOUT] 데이터_타입, ...)
IS
	변수선언
BEGIN	# 프로시저의 시작
	명령어;
[COMMIT | ROLLBACK]
END;	# 프로시저의 끝

# OR REPLACE : 기존 프로시저 존재 시에 현재 컴파일하는 내용으로 덮어씀
# IN : 운영체제에서 프로시저로 값을 전달하는 모드
# OUT : 프로시저에서 처리된 결과를 운영체제로 전달하는 모드
# INOUT : IN과 OUT의 두가지 기능을 동시에 수행하는 모드
# COMMIT : 하나의 트랜젝션이 성공적으로 끝나고, 데이터베이스가 일관성 있는 상태에 있을 때 하나의 트랜젝션이 끝났을 때 사용하는 연산
# ROLLBACK : 하나의 트랜젝션이 비정상적으로 종료되어 트랜젝션 원자성이 깨질 경우 처음부터 다시 시작하거나, 부분적으로 연산을 취소하는 연산

2. 사용자 정의 함수 (User-Defined Function)

일련의 SQL 처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL

CREATE [OR REPLACE] FUNCTION 함수명
(파라미터_명 IN 데이터_타입, ...)
RETURN 데이터_타입 	# 사용자 정의함수가 종료될 때 반환하는 데이터 타입
IS
	변수선언
BEGIN	# 사용자 정의함수 시작
	명령어;
    RETURN 변수;	# 사용자 정의함수가 종료될 때 반환하는 단일 값
END;	# 사용자 정의함수 끝

# OR REPLACE : 기존 사용자 정의함수 존재 시에 현재 컴파일하는 내용으로 덮어씀
# IN : 운영체제에서 사용자 정의함수로 값을 전달하는 모드

3. 트리거 (Trigger)

데이터베이스 시스템에서 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL

CREATE [OR REPLACE] TRIGGER 트리거명
[BEFORE | AFTER] 유형 ON 테이블명
[FOR EACH ROW]
BEGIN	# 트리거 시작
END;	# 트리거 끝

# OR REPLACE : 기존 트리거 존재 시에 현재 컴파일하는 내용으로 덮어씀
# BEFORE : 테이블 명에 대한 INSERT / UPDATE / DELETE 를 수행하기 전에 트리거가 실행
# AFTER : 테이블 명에 대한 INSERT / UPDATE / DELETE 가 성공적으로 실행되었을 때만 트리거가 실행
# 유형 : INSERT, UPDATE, DELETE 중 트리거를 수행할 명령어 유형을 선택 (INSERT OR DELETE)
# FOR EACH ROW  : 매번 변경되는 데이터 행의 수만큼 실행을 위한 명령어

조건문

# IF문
IF 조건 THEN 문장;
ELSEIF 조건 THEN 문장;
ELSE 문장;
END IF;

# 간단한 케이스 문 (Simple Case Expression)
CASE
    WHEN 값1 THEN SET 명령어;
    WHEN 값2 THEN SET 명령어;
    ELSE SET 명령어;
END CASE;

# 검색된 케이스 문(Searched Case Expression)
CASE
    WHEN 조건1 THEN SET 명령어;
    WHEN 조건2 THEN SET 명령어;
    ELSE SET 명령어;
END CASE;

반복문

# LOOP 문
LOOP 문장;
EXIT WHEN 탈출조건;
END LOOP;

# WHILE 문
WHILE 반복조건 LOOP 문장;
EXIT WHEN 탈출조건;
END LOOP;

# FOR LOOP 문
FOR 인덱스 IN 시작값 .. 종료값
LOOP 문장;
END LOOP;

예외부(Exception)

EXCEPTION WHEN 조건 THEN SET 명령어;

 

'정보처리기사 실기' 카테고리의 다른 글

21. 개발환경 구축  (0) 2022.01.24
20. 데이터 조작 프로시저 최적화  (0) 2022.01.23
18. 응용 SQL 작성하기  (0) 2022.01.23
17. 데이터베이스 기본  (0) 2022.01.22
16. 프로그래밍 언어 활용  (0) 2022.01.22