◈ 개요.
PL/SQL (Oracle’s Procedural Language extension to SQL) 은 SQL의 확장된 개념으로 ORACLE에서 지원하는 프로그래밍 언어의 특성을 수용한 SQL의 확장이며, PL/SQL Block내에서 SQL의 DML(데이터 조작어)문과 Query(검색어)문, 절차형 언어(if, loop)등을 사용하여 절차적 프로그래밍을 가능하게 한 강력한 트랜잭션 언어이다.
PL/SQL 문은 블록구조로 이루어지며 PL/SQL 자신이 컴파일 엔진을 포함하고 있다.
◈ 장점.
PL/SQL 문은 BLOCK 구조로 다수의 SQL 문을 한번에 ORACLE DB 로 보내서 처리하므로 수행 속도를 향상 시킬수 있다.
PL/SQL 의 모든 요소는 하나 또는 두개 이상의 블록으로 구성하여 모듈화가 가능하다.
보다 강력한 프로그램을 작성하기 위해서 큰 블록안에 소블럭을 위치시킬 수 있다.
Variable, Constant, Cursor, Exception을 정의하고, SQL문장과 Procedural 문장에서 사용한다.
단순, 복잡한 데이터 형태의 변수를 선언한다.
테이블의 데이터 구조와 DataBase의 컬럼에 준하여 동적으로 변수를 선언 할 수 있다.
Exception 처리 루틴을 이용하여 Oracle Server Error를 처리 할 수 있다.
사용자 정의 에러를 선언하고 Exception 처리 루틴으로 처리 할 수 있다.
◈ 구조.
PL/SQL은 논리적인 블록으로 이루어진 구조화된 블록언어로써 세개의 섹션으로 구성된다.
-. 선언부.
-. 실행부.
-. 예외처리부.
1. 선언부
Declare 문으로 시작하며 블록에서 사용될 변수, 상수, 커서, 예외를 선언하는 섹션으로 필요하지 않으면 생략할 수 있는 선택적 섹션이다.
- 변수선언
- 상수선언
- 커서선언
- Exception선언
2. 실행부
Begin 문으로 시작하여 End; 문으로 종료하며 수행될 작업의 몸체이다.
SQL문, 제어문, 반복문, 커서속성 등을 이용하여 블록에서 실행할 몸체를 구성할 수 있으며 생략할 수 없는 필수적 섹션이다.
- Select / Update, Insert, Delete
- IF문
- Loop문
- 커서속성
3. 예외처리부
예외처리 섹션은 End; 문 바로 앞에 위치하며 미리정의된 예외를 추적하고 명시된 조건이 발생할 경우에 취할 작업을 정의하고 선택적 섹션이다.
- 미리정의된 예외
- 사용자정의 예외
- Exception 함수(sqlcode, sqlerrm)
Declare, Begin, Exception 문은 세미콜론(;)이 붙어서는 않되지만, End 문과 모든 PL/SQL 문장은 줄의 마지막에 세미콜론을 반드시 붙여야 한다.
◈ PL/SQL종류
1. 익명(이름없는) Procedure
• 이름없이 사용되는 PL/SQL 블록.
• DB에 저장되지 않고 사용자가 필요할 때마다 반복적으로 작성, 실행.
2. 2. Stored Procedure
• 생성이후 DB에 정보가 저장됨.
• 실행하려는 로직을 처리하고 PL/SQL블록의 흐름제어.
• 인자를 받아서 호출되고 실행.
3. 3. Stored Function
• 프로시저와 동일한 개념, 기능이나 처리결과를 사용자에게 리턴.
4. 4. Package
• 특정업무에 사용되는 프로시저 또는 함수를 묶어 생성하여 관리.
5. 5. Trigger
• 테이블 생성시 지정.
지정된 이벤트 발생시 자동적으로 호출되어 실행되는 특수한 형태의 프로시저.
•DB의 감시, 보안, 연속적 오퍼레이션의 자동처리 구현
|