Patrick's 데이터 세상

절차형 SQL 본문

Programming/Oracle

절차형 SQL

patrick610 2020. 6. 21. 15:13
반응형
SMALL

절차형 SQL

 

 

1. 절차형 SQL

   

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

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

 

 

2. PL/SQL

   

   Oracle의 PL/SQL은 Block 구조로 되어있고 Block 내에는 DML 문장과 QUERY 문장, 그리고 절차형 언어(IF, LOOP) 등을 사용할 수 있으며, 절차적 프로그래밍을 가능하게 하는 트랜잭션 언어입니다.

이런 PL/SQL을 이용하여 다양한 저장 모듈(Stored) Module을 개발할  수 있습니다.

저장 모듈이란 PL/SQL 문장을 데이터베이스 서버에 저장하여 사용자와 애플리케이션 사이에서 공유할 수 있도록 만든 일종의 SQL 컴포넌트 프로그램이며, 독립적으로 실행되거나 다른 프로그램으로부터 실행될 수 있는 완전한 실행 프로그램이다.

Oracle 저장 모듈에는 Procedure, User Defined Function, Trigger가 있습니다.

 

 

  가. PL/SQL 특징

 

   - PL/SQL은 Block 구조로 되어있어 각 기능별로 모듈화가 가능합니다.

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

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

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

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

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

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

 

 

 

   PL/SQL Block 프로그램을 입력 받으면 SQL 문장과 프로그램 문장을 구분하여 처리합니다.

   즉, 프로그램 문장은 PL/SQL 엔진이 처리하고 SQL 문장은 Oracle 서버의 SQL Statement Executor가 실행하도록 작업을 분리하여 처리합니다.

 

 

  나. PL/SQL 특징

 

   

   

    - DECLARE : BEGIN ~ END 절에서 사용될 변수와 인수에 대한 정의 및 데이터 타입을 선언하는 선언부입니다.

    - BEGIN ~ END : 개발자가 처리하고자 하는 SQL문과 여러가지 비교문, 제어문을 이용하여 필요한 로직을 처리하는 실행부입니다.

    - EXCEPTION : BEGIN ~ END 절에서 실행되는 SQL문이 실행될 때 에러가 발생하면 그 에러를 어떻게 처리할 것인지를 정의하는 예외 처리부입니다.

  

   

  다. PL/SQL 기본 문법(Syntax)

 

CREATE [OR REPLACE] Procedure [프로시저 명]
(  argument1 [mode] data_type1
 , argument2 [mode] data_type2
   ...  ... )
IS [AS]
   ...  ...
BEGIN
   ...  ...
EXCEPTIOIN
   ...  ...
END;
/

 

    Stored Procedure를 통한 PL/SQL 기본 문법

 

   - [OR REPLACE] 절은 데이터베이스 내에 같은 이름의 프로시저가 있을 경우, 기존의 프로시저를 무시하고 새로운 내용으로 덮어쓰기 하겠다는 의미

   - Argument는 프로시저가 호출될 때 프로시저 안으로 어떤 값이 들어오거나 혹은 프로시저에서 처리한 결과값을 운영 체제로 리턴시킬 매개 변수를 지정할 때 사용

   - [mode] 부분에 지정할 수 있는 매개 변수의 유형은 3가지.

     IN : 운영체제에서 프로시저로 전달될 변수의 MODE

     OUT : 프로시저에서 처리된 결과가 운영체제로 전달되는 MODE

     INOUT : IN과 OUT 두 가지의 기능을 동시에 수행하는 MODE

   - 마지막 / (슬래쉬)는 데이터베이스에게 프로시저를 컴파일하라는 명령어

 

DROP PROCEDURE [프로시저 명]

    생성된 프로시저를 삭제하는 명령어

 

 

 

반응형
LIST

'Programming > Oracle' 카테고리의 다른 글

ANALYZE  (0) 2020.06.21
오라클 DB LOCK 걸린 개체 확인 & LOCK 해제  (0) 2020.06.21
DCL(DATA CONTROL LANGUAGE)  (0) 2020.06.21
그룹 내 비율 함수  (0) 2020.06.21
그룹 내 행 순서 함수  (0) 2020.06.21
Comments