CODEDRAGON ㆍDevelopment/Database
PL/SQL
· PL/SQL 특징
· PL/SQL 구조
· PL/SQL 기본 문법(Syntax)
PL/SQL 특징
· Oracle의 PL/SQL은 Block 구조로 되어있고 Block 내에는 DML 문장과 QUERY 문장, 그리고 절차형 언어(IF, LOOP) 등을 사용할 수 있으며, 절차적 프로그래밍을 가능하게 하는 트랜잭션 언어입니다. 이런 PL/SQL을이용하여 다양한 저장 모듈(Stored Module)을 개발할 수 있습니다.
· 저장 모듈(Stored Module)이란 PL/SQL 문장을 데이터베이스 서버에 저장하여 사용자와 애플리케이션 사이에서 공유할 수 있도록 만든 일종의 SQL 컴포넌트 프로그램이며, 독립적으로 실행되거나 다른 프로그램으로부터 실행될 수 있는 완전한 실행 프로그램입니다.
· Oracle의 저장 모듈에는 Procedure, User Defined Function, Trigger가 있습니다.
· PL/SQL은 Block 구조로 되어있어 각 기능별로 모듈화가 가능합니다.
· 변수, 상수 등을 선언하여 SQL 문장간 값을 교환합니다.
· IF, LOOP 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능하도록 합니다.
· DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용할 수 있습니다.
· PL/SQL은 Oracle에 내장되어 있으므로 Oracle과 PL/SQL을 지원하는 어떤 서버로도 프로그램을 옮길 수 있습니다.
· PL/SQL은 응용 프로그램의 성능을 향상시킵니다.
· PL/SQL은 여러 SQL 문장을 Block으로 묶고 한 번에 Block 전부를 서버로 보내기 때문에 통신량을 감소시킬 수 있습니다.
PL/SQL 구조
PL/SQL 의 구조도(SQL cursor의 흐름)
DECLARE |
· 필수 · BEGIN ~ END 절에서 사용될 변수와 인수에 대한 정의 및 데이터 타입을 선언하는 선언부. · 선언: 인수 및 상수등 정의 및 데이터 타입 선언. |
BEGIN ~ END |
· 필수 · 개발자가 처리하고자 하는 SQL 문과 여러 가지 비교문, 제어문을 이용하여 필요한 로직을 처리하는 실행부. · 실행: 목적한 SQL실행 및 필요로직 |
EXCEPTION |
· 선택 · BEGIN ~ END 절에서 실행되는 SQL 문이 실행될 때 에러가 발생하면 그 에러를 어떻게 처리할 것이지를 정의하는 예외 처리부. · 에러처리: 실행 중 발생하는 에러 처리 |
PL/SQL 기본 문법(Syntax)
앞으로 살펴볼 User Defined Function이나 Trigger의 생성 방법이나 사용 목적은 다르지만 기본적인 문법은 비슷하기 때문에 여기에서는 Stored Procedure를 통해서 PL/SQL에 대한 기본적인 문법을 정리합니다.
DROP Procedure
· CREATE TABLE 명령어로 테이블을 생성하듯 CREATE 명령어로 데이터베이스내에 프로시저를 생성할 수 있습니다.
· 생성 프로시저는 데이터베이스 내에 저장합니다.
· 프로시저는 개발자가 필요할 때 호출하여 실행할 수 있습니다.
· 'OR REPLACE'절은 데이터베이스 내에 같은 이름의 프로시저가 있을 경우, 기존의 프로시저를 무시하고 새로운 내용으로 덮어쓰기 하겠다는 의미입니다.
· Argument는 프로시저가 호출될 때 프로시저 안으로 어떤값이 들어오거나 혹은 프로시저에서 처리한 결과값을 운영 체제로 리턴시킬 매개 변수를 지정할 때 사용합니다.
· 'mode'부분에 지정할 수 있는 매개 변수의 유형은 크게 세가지가 있습니다.
o 운영 체제에서 프로시저로 전달될 변수의 MODE인 IN
o 프로시저에서 처리된 결과가 운영체제로 전달되는 MODE인 OUT
o IN과 OUT 두 가지의 기능을 동시에 수행하는 INOUT MODE.
· '/'는 데이터베이스에게 프로시저를 컴파일하라는 명령어입니다.