📚CS/SQL

SQL 기본 및 활용 - 절차형 SQL

바규냐하 2023. 8. 6. 16:37

1. 절차형 SQL 개요

일반적인 개발 언어처럼 SQL에도 절차 지향적인 프로그램이 가능하도록 DBMS 벤더별로 PL/SQL, SQL/PL. T-SQL 등의 절차형 SQL을 제공하고 있다.

절차형 SQL을 이용하면 SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용하여 특정 기능을 수행하는 저장 모듈을 생성할 수 있다.

2. PL/SQL 개요

PL/SQL 특징

- PL/SQL은 block 구조로 되어있어 각 기능별로 모듈화가 가능하다

- 변수, 상수 등을 선언하여 SQL 문장 간 값을 교환한다

- IF, LOOP 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능하도록 한다

- DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용할 수 있다

- PL/SQL은 Oracle에 내장되어 있으므로 Oracle과 PL/SQL을 지원하는 어떤 서버로도 프로그램을 옮길 수 있다

- PL/SQL은 응용 프로그램의 성능을 향상시킨다

- PL/SQL은 여러 SQL문장을 Block으로 묶고 한 번에 Block 전부를 서버로 보내기 때문에 통신량을 줄일 수 있다.

PL/SQL 구조

PL/SQL 기본 문법

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 특징

T-SQL은 근본적으로 SQL Server를 제어하기 위한 언어로서, T-SQL은 엄격히 말하면, MS사에서 ANSI/ISO 표준의 SQL에 약간의 기능을 추가해 보완적으로 만든 것이다.

T-SQL을 이용하여 다양한 저장 모듈을 개발할 수 있는데, T-SQL의 프로그래밍 기능은 아래와 같아

- 변수 선언 기능 @@이라는 전역변수(시스템함수)와 @이라는 지역변수가 있다

- 지역변수는 사용자가 자신의 연결 시간 동안만 사용하기 위해 만들어지는 변수이며 전역변수는 이미 SQL서버에 내장된 값이다

- 데이터 유형 (Data Type)을 제공한다. 즉, int, float, varchar 등의 자료형을 의미한다

- 연산자 산술연산자와 비교연산자, 논리연산자 사용이 가능하다

- 흐름 제어 기능 IF-ELSE와 WHILE, CASE-THEN 사용이 가능하다

- 한줄 주석: -- 뒤의 내용은 주석범위, 주석: /*내용*/ 형태를 사용하며, 여러 줄도 가능함

T-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 Defined Function의 생성과 활용

User Defined Function은 Procedure처럼 절차형 SQL을 로직과 함께 데이터베이스 내에 저장해 놓은 명령문의 집합을 의미한다.

Function이 Procedure와 다른 점은 RETURN을 사용해서 하나의 값을 반드시 되돌려 줘야 한다는 것이다.

6. Trigger의 생성과 활용

7. 프로시저와 트리거의 차이점

프로시저는 BEGIN ~ END 절 내에 COMMIT, ROLLBACK과 같은 트랜잭션 종료 명령어를 사용할 수 있지만, 데이터베이스 트리거는 BEGIN ~ END 절 내에 사용할 수 없다.

글에서 나오는 코드와 내용은 책 SQL 전문가 가이드에서 가져옴을 알립니다.