[Oracle/펌] PL/SQL 01

프로그래밍/DB 2007. 11. 27. 14:06 Posted by galad
출처 블로그 > 행운의 별자리님의 블로그
원본 http://blog.naver.com/kwakjt/26651797

◈ 개요.

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의 감시, 보안, 연속적 오퍼레이션의 자동처리 구현
 

'프로그래밍 > DB' 카테고리의 다른 글

[펌] PL/SQL 03  (0) 2007.11.27
[펌] PL/SQL 02  (0) 2007.11.27
[JDBC] 06 PL/SQL  (0) 2007.11.27
[JDBC] 05 ResultSet  (0) 2007.11.27
[JDBC] 04 JDBC - Connection Pool...  (0) 2007.11.27