제 8절 절차형 SQL
1. 절차형 SQL개요
: 절차형 SQL이용시 SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용하여 특정기능을 수행하는 저장 모듈을 생성할 수 있다. Procedure, User Defined Function Triger
2. PL/SQL
가. PL/SQL 특징
- Block 구조로 되어있어 기능 별 모듈화 가능
- 변수, 상수 등을 선언하여 SQL간 값을 교환한다.
- IF, LOOP등의 절차형 언어를 사용하여 절차적인 프로그램이 가능
- DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용 가능
- Oracle에 내장 되 있으므로 Oracle과 PL/SQL을 지원하는 어떤 서버로든 옮길 수 있다.
- 응용 프로그램의 성능을 향상시킨다.
- 여러 SQL문장을 Block으로 묶고 한번에 Block전부를 서버로 보내기 때문에 통신량을 줄일 수 있다.
나. PL/SQL 구조
- DECLARE : BEGIN ~ END절에서 사용될 변수와 인수에 대한 정의 및 데이터 타입을 선언하는 선언부
- BEGIN ~ END : 개발자가 하고자 하는 SQL문과 여러가지 비교문, 제어문을 이용하여 필요한 로직을 처리하는 실행부
- EXCEPTION : BEGIN ~ END절에서 실행되는 SQL문이 실행될 때 에러가 살생하면 그 에러를 어떻게 처리할 것인지를 정의하는 예외처리부 이다.
다. PL/SQL 기본 문법 (Syntax)
* 생성 : CREATE [OR REPLACE] Procedure [Procedure_name]
(argument1 [mode] data_type1,
argument2 [mode] data_type2,
… , … )
IS [AS]
…
BEGIN
…
EXCEPTION
…
END;
* 삭제 : DROP Procedure [Procedure_name]
3. T-SQL 개요
가. T-SQL 특징
: SQL Server을 제어하기 위한 언어, 변수선언, 데이터유형 제공, 연산자, 산술연산자, 비교 연산자, 논리 연산자 사용가능, 흐름제어 기능 IF-ELSE | WHERE | CASE-THEN 사용, 주석기능(한줄주석:--, 범위주석 : /* */)
나. T-SQL 구조
- DECLARE : BEGIN ~ END절에서 사용될 변수와 인수에 대한 정의 및 데이터 타입을 선언하는 선언부
- BEGIN ~ END : 개발자가 하고자 하는 SQL문과 여러가지 비교문, 제어문을 이용하여 필요한 로직을 처리하는 실행부
- EXCEPTION : BEGIN ~ END절에서 실행되는 SQL문이 실행될 때 에러가 살생하면 그 에러를 어떻게 처리할 것인지를 정의하는 예외처리부 이다.
다. T-SQL 기본문법
* 생성 : CREATE Procedure [schema_name], Procedure_name
@parameter1 data_type1 [mode],
@parameter2 data_type2 [mode],
…
WITH
AS
…
BEGIN
….
ERROR 처리
…
END;
* 삭제 : DROP Procedure [schema_name] Procedure_name;
4. Procedure의 생성과 활용
5. User Definded Function의 생성과 활용
: 절차형SQL을 로직과 함께 데이터베이스 내에 저장해 놓은 명령문의 집합.
6. Trigger의 생성과 활용
: 특정 테이블에 DML문이 수행되었을 때, 데이터베이스에서 자동동작 하는 프로그램.
7. 프로시저와 트리거의 차이점
* 프로시저 : CREATE Procedure 문법사용
EXECUTE 명령어로 실행
COMMIT, ROLLBACK 실행가능
* 트리거 : CREATE Trigger 문법사용
생성 후 자동으로 실행
COMMIT, ROLLBACK 실행안됨
'자격증 > SQLD' 카테고리의 다른 글
| [#SQLD] 윈도우 함수(Window Function) 완벽 정리: RANK, DENSE_RANK, ROW_NUMBER 차이점 (0) | 2026.01.07 |
|---|---|
| [#SQLD] 제54회 SQL 개발자(SQLD) 합격후기 (2) | 2024.11.13 |
| [#SQLD] 제 7절 DCL (Data Control Language) (0) | 2023.03.10 |
| [#SQLD] 제 6절 윈도우 함수 (0) | 2023.03.09 |
| [#SQLD] 제 5절 그룹함수(GROUP 함수) (0) | 2023.03.09 |
댓글