※ 공부 내용의 복습 개념으로 정리된 글입니다. - 출처 시나공
프로시저(Procedure)의 개요
프로시저란 절차형 SQL을 활용하여 특정 기능을 수행하는 일조으이 트랜잭션 언어로, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행합니다.
- 프로시저를 만들어 데이터베이스에 저장하면 여러 프로그램에서 호출하여 사용할 수 있습니다.
- 프로시저는 데이터베이스에 저장되어 수행되기 때문에 스토어드(Stored) 프로시저라고도 불립니다.
- 프로시저는 시스템의 일일 마감 작업, 일괄(Batch) 작업 등에 주로 사용됩니다.
프로시저의 구성도
- DECLARE : 프로시저의 명칭, 변수, 인수, 데이터 타입을 정의하는 선언부입니다.
- BEGIN / END : 프로시저의 시작과 종료를 의미합니다.
- CONTROL : 조건문 또는 반복문이 삽입되어 순차적으로 처리됩니다.
- SQL : DML, DCL이 삽입되어 데이터 관리를 위한 조회, 추가, 수정, 삭제 작업을 수행합니다.
- EXCEPTION : BEGIN ~ END 안의 구문 실행 시 예외가 발생하면 이를 처리하는 방법을 정의합니다.
- TRANSACTION : 수행된 데이터 작업들을 DB에 적용할지 취소할지를 결정하는 처리부입니다.
※ 절차형 SQL
절차형 SQL은 C, JAVA 등의 프로그래밍 언어와 같이 연속적인 실행이나 분기, 반복 등의 제어가 가능한 SQL을 의미합니다.
※ 트랜잭션 언어
트랜잭션 언어는 데이터베이스를 조작하고 트랜잭션을 처리하는 언어로, SQL과 TCL이 트랜잭션 언어에 속합니다.
프로시저 생성
프로시저를 생성하기 위해서는 CREATE PROCEDURE 명령어를 사용합니다.
표기 형식
CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터)
[지역변수 선언]
BEGIN
프로시저 BODY;
END;
- OR REPLACE : 선택적인(Optional) 예약어입니다. 이 예약어를 사용하면 동일한 프로시저 이름이 이미 존재하는 경우, 기존의 프로시저를 대체할 수 있습니다.
- 프로시저명 : 프로시저 파라미터로는 다음과 같은 것들이 올 수 있습니다.
- IN : 호출 프로그램이 프로시저에게 값을 전달할 때 지정합니다.
- OUT : 프로시저가 호출 프로그램에게 값을 반환할 때 지정합니다.
- INOUT : 호출 프로그램이 프로시저에게 값을 전달하고, 프로시저 실행 후 호출 프로그램에 값을 반환할 때 지정합니다.
- 매개변수명 : 호출 프로그램으로부터 전달받은 값을 저장할 변수의 이름을 지정합니다.
- 자료형 : 변수의 자료형을 지정합니다.
- 프로시저 BODY
- 프로시저의 코드를 기족하는 부분입니다.
- BEGIN에서 시작하여 END로 끝나며, BEGIN과 END 사이에는 적어도 하나의 SQL문이 있어야 합니다.
예제
'사원번호'를 입력받아 해당 사원의 '지급방식'을 "S"로 변경하는 프로시저를 생성하시오.
※ 예외의 조건
예외의 조건(WHEN ~ THEN)에는 DBMS가 내부 문제로 종료(PROGRAM_ERROR)되었을 때뿐만이 아니라, 데이터를 찾지 못했을 때, UNIQUE 옵션을 갖는 속성에 중복 데이터를 삽입할 때, 0으로 나누려 했을 때 등 여러 조건을 삽입할 수 있습니다.
프로시저 실행
프로시저를 실행하기 위해서는 EXECUTE 명령어 또는 CALL 명령어를 사용하며, EXECUTE 명령어를 줄여서 EXEC로 사용하기도 합니다.
표기 형식
EXECUTE 프로시저명;
EXEC 프로시저명;
CALL 프로시저명;
예제
'사원번호' 32를 인수로 하여 위에서 생성된 emp_change_s 프로시저를 실행하시오.
EXECUTE emp_change_s(32);
프로시저 제거
프로시저를 제거하기 위해서는 DROP PROCEDURE 명령어를 사용합니다.
표기 형식
DROP PROCEDURE 프로시저명;
예제
위에서 생성된 프로시져 emp_change_s를 제거하시오.
DROP PROCEDURE emp_change_s;
'정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 - 데이터베이스 프로그래밍 - 쿼리 성능 최적화 (0) | 2024.09.27 |
---|---|
정보처리산업기사 - 데이터베이스 프로그래밍 - 절차형 SQL (0) | 2024.09.25 |
정보처리산업기사 - SQL 활용 - DML - JOIN (0) | 2024.09.24 |
정보처리산업기사 - SQL 활용 - DML - SELECT - 2 (0) | 2024.09.23 |
정보처리산업기사 - SQL 활용 - DML - SELECT - 1 (3) | 2024.09.22 |