1. 절차형 SQL 개요
- 절차 지향적인 프로그램이 가능하도록 DBMS 벤더별로 PL(Procedural Language)/SQL(Oracle), SQL/PL(DB2), T-SQL(SQL Server) 등의 절차형 SQL을 제공한다.
- SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용하여 특정 기능을 수행하는 저장 모듈을 생성할 수 있다.
2. PL/SQL 개요
- Oracle의 PL/SQL은 Block 구조로 되어있고 Block 내에는 DML 문장과 QUERY 문장, 그리고 절차형 언어(IF, LOOP) 등을 사용할 수 있다.
- 절차적 프로그래밍을 가능하게 하는 트랜잭션 언어이다.
2-1. PL/SQL의 특징
- Block 구조로 되어있어 각 기능별로 모듈화가 가능하다.
- 변수, 상수 등을 선언하여 SQL 문장 간 값을 교환한다.
- IF, LOOP 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능하도록 한다.
- DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용할 수 있다.
- PL/SQL은 Oracle에 내장되어 있으므로 Oracle과 PL/SQL을 지원하는 어떤 서버로도 프로그램을 옮길 수 있다.
- PL/SQL은 응용 프로그램의 성능을 향상시킨다.
- PL/SQL은 여러 SQL 문장을 Block으로 묶고 한 번에 Block 전부를 서버로 보내기 때문에 통신량을 줄일 수 있다.
2-2. PL/SQL 구조

- 저장 모듈
- PL/SQL 문장을 데이터베이스 서버에 저장하여 사용자와 애플리케이션 사이에서 공유할 수 있도록 만든 일종의 SQL 컴포넌트 프로그램이다.
- 독립적으로 실행되거나 다른 프로그램으로부터 실행될 수 있는 완전한 실행 프로그램이다.
- Oracle의 저장 모듈에는 Procedure, User Defined Function, Trigger가 있다.
2-3. PL/SQL 기본 문법(Syntax)
CREATE [OR REPLACE] Procedure [Procedure_name] (argument1 [mode] data_type1, argument2 [mode] date_type2, ... )
IS [AS] ...
BEGIN ...
EXCEPTION ...
END; /
DROP Procedure [Procedure_name];
3. T-SQL 개요
- SQL Server를 제어하기 위한 언어이다.
3-1. T-SQL의 특징
- 변수 선언 기능 @@이라는 전역변수(시스템 함수)와 @이라는 지역변수가 있다.
- 지역변수는 사용자가 자신의 연결 시간 동안만 사용하기 위해 만들어지는 변수이며 전역변수는 이미 SQL서버에 내장된 값이다.
- 데이터 유형(Data Type)을 제공한다. 즉 int, float, varchar 등의 자료형을 의미한다.
- 연산자(Operator) 산술연산자( +, -, *, /)와 비교연산자(=, <, >, <>) 논리연산자(and, or, not) 사용이 가능하다.
- 흐름 제어 기능 IF-ELSE와 WHILE, CASE-THEN 사용이 가능하다.
3-2. T-SQL 구조

3-3. T-SQL 기본 문법(Syntax)
CREATE Procedure [schema_name.]Procedure_name @parameter1 data_type1 [mode], @parameter2 date_type2 [mode], ...
WITH AS ...
BEGIN ...
ERROR 처리 ...
END;
DROP Procedure [schema_name.]Procedure_name;
4. Procedure의 생성과 활용
4-1. 프로시저(Procedure)이란?
- DB에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것이다.
- 넓은 의미로 어떠한 업무를 수행하기 위한 절차를 의미한다.

5. User Defined Function의 생성과 활용
- Procedure처럼 절차형 SQL을 로직과 함께 데이터베이스 내에 저장해 놓은 명령문의 집합을 의미한다.
6. Trigger의 생성과 활용
6-1. 트리거(Trigger)란?
- 특정한 테이블에 INSERT, UPDATE, DELETE와 같은 DML문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램이다.
6-2. 트리거(Trigger)의 특징
- 테이블과 뷰, 데이터베이스 작업을 대상으로 정의할 수 있으며 전체 트랜잭션 작업에 대해 발생되는 Trigger와 각 행에 대해서 발생되는 Trigger가 있다.
- 데이터베이스에 의해 자동 호출되지만 결국 INSERT, UPDATE, DELETE 문과 하나의 트랜잭션 안에서 일어나는 일련의 작업들이라 할 수 있다.
- 데이터베이스 보안의 적용, 유효하지 않은 트랜잭션의 예방, 업무 규칙 자동 적용 제공 등에 사용될 수 있다.
7. 프로시저와 트리거의 차이점
