제8절 절차형 SQL
1. 절차형 SQL 개요
- 일반적인 개발 언어처럼 SQL에도 절차 지향 프로그램이 가능하도록 절차형 SQL을 제공하는 DBMS 벤더들이 있다.
- PL/SQL, SQL/PL, T-SQL
2. PL/SQL 개요
(1) 특징
- Block구조로 되어 있어 각 기능별로 모듈화가 가능하다.
- 변수, 상수 등을 선언하여 SQL 문장 간 값을 교환한다.
- IF, LOOP 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능하도록 한다.
- DBMS 정의 에러나 사용자 정의 에러를 사용할 수 있다.
- Oracle의 PL/SQL은 Block 구조로 되어있고 Block 내에는 DML 문장과 QUERY 문장, 그리고 절차형 언어(IF, LOOP) 등을 사용할 수 있으며, 절차적 프로그래밍을 가능하게 하는 트랜잭션 언어이다.
(2) 구조
- DECLARE : BEGIN ~ END 절에서 사용될 변수와 인수에 대한 정의 및 데이터 타입을 선언하는 선언부
- BEGIN ~ END : 개발자가 처리하고자 하는 SQL문과 비교문, 제어문을 이용하여 필요한 로직을 처리하는 실행부
- EXCEPTION : BEGIN ~ END 절에서 실행되는 SQL문이 에러가 발생하면 그 에러의 처리에 대한 것을 정의하는 예외 처리부
(3) PL/SQL 기본 문법 (Syntax)
CREATE [OR REPLACE] Procedure [Procedure_name]
( argument1 [mode] data_type1,
argument2 [mode] date_type2,
... ... )
IS [AS]
... ...
BEGIN
... ...
EXCEPTION
... ...
END;
/
3. T-SQL 개요
(1) 특징 : T-SQL은 근본적으로 SQL Server를 제어하기 위한 언어로서, T-SQL은 엄격히 말하면, MS사에서 ANSI/ISO 표준의 SQL에 약간의 기능을 더 추가해 보완적으로 만든 것
(2) 구조
(3) 기본 문법
CREATE Procedure [schema_name.]Procedure_name
@parameter1 data_type1 [mode],
@parameter2 date_type2 [mode],
... ...
WITH
AS
... ...
BEGIN
... ...
ERROR 처리
... ...
END;
4. Procedure의 생성과 활용
5. User Defined Function의 생성과 활용
- 절차형 SQL을 로직과 함께 데이터베이스 내에 저장해 놓은 명령문의 집합을 의미한다.
6. Trigger의 생성과 활용
- 특정한 테이블에 INSERT, UPDATE DELETE와 같은 DML문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램
- 즉 사용자가 직접 호출하여 사용하는 것이 아니고 데이터베이스에서 자동적으로 수행하게 된다.
- Trigger는 테이블과 뷰, 데이터베이스 작업을 대상으로 정의할 수 있으며, 전체 트랜잭션 작업에 대해 발생되는 Trigger와 각 행에 대해서 발생되는 Trigger가 있다.
- Trigger는 데이터베이스에 의해 자동 호출되지만 결국 INSERT, UPDATE, DELETE 문과 하나의 트랜잭션 안에서 일어나는 일련의 작업들이라 할 수 있다.
- Trigger는 데이터베이스 보안의 적용, 유효하지 않은 트랜잭션의 예방, 업무 규칙 자동 적용 제공 등에 사용될 수 있다.
7. 프로시저와 트리거의 차이점
- 프로시저는 BEGIN ~ END 절 내에 COMMIT, ROLLBACK과 같은 트랜잭션 종료 명령어를 사용할 수 있지만, 데이터베이스 트리거는 BEGIN ~ END 절 내에 사용할 수 없다
'자격증 > SQLD' 카테고리의 다른 글
SQLD 정리 / 과목 2 SQL 기본 및 활용 / 제3장 SQL 최적화 기본 원리 / 제2절 인덱스 기본 (0) | 2021.05.28 |
---|---|
SQLD 정리 / 과목 2 SQL 기본 및 활용 / 제3장 SQL 최적화 기본 원리 / 제1절 옵티마이저와 실행계획 (0) | 2021.05.28 |
SQLD 정리 / 과목 2 SQL 기본 및 활용 / 제2장 SQL 활용 / 제7절 DCL (0) | 2021.05.27 |
SQLD 정리 / 과목 2 SQL 기본 및 활용 / 제2장 SQL 활용 / 제6절 윈도우 함수 (0) | 2021.05.27 |
SQLD 정리 / 과목 2 SQL 기본 및 활용 / 제2장 SQL 활용 / 제5절 그룹 함수 (0) | 2021.05.27 |