블록
PL/SQL 소스 프로그램의 기본 단위를 블록(Block)이라고 하는데, 블록은 선언부, 실행부, 예외 처리부로 구성된다. 이 블록은 다시 이름이 없는 블록과 이름이 있는 블록으로 구분할 수 있는데 전자에 속하는 것이 익명 블록이며, 함수, 프로시저, 패키지 등이 후자에 속한다. PL/SQL의 블록 구조는 다음과 같다.
이름부
IS(AS)
선언부
BEGIN
실행부
EXCEPTION
예외 처리부
END;
❶ 이름부: 블록의 명칭이 오는데, 생략할 때는 익명 블록이 된다.
❷ 선언부: DECLARE로 시작되며, 실행부와 예외 처리부에서 사용할 각종 변수, 상수, 커서 등을 선언한다. 중요한 점은 변수 선언이나 실행부와 예외 처리부에서 사용하는 각종 문장의 끝에 반드시 세미콜론(;)을 찍어야 한다는 것이다. 세미콜론이 없으면 오류가 발생한다. 사용할 변수나 상수가 없다면 선언부를 생략할 수 있다.
❸ 실행부: 실제 로직을 처리하는 부분이다. 이 부분에는 각종 문장(일반 SQL문, 조건문, 반복문 등)이 올 수 있고, 이러한 문장을 사용해 비즈니스 로직을 구현하는 것이다. 하지만 SQL 문장 중 DDL문은 사용할 수 없고 DML 문만 사용할 수 있으며 모든 문장의 끝에는 세미콜론을 붙여야 한다.
❹ 예외 처리부: EXCEPTION 절로 시작되는 부분으로 실행부에서 로직을 처리하다가 오류가 발생하면 처리할 내용을 기술하는 부분으로 예외 처리부는 생략이 가능하다. ‘예외처리’ 장에서 자세히 설명하겠지만, PL/SQL에서 말하는 오류는 크게 두 가지로 나눌 수 있다. PL/SQL 코드 컴파일 과정에서 발생하는 오류와 런타임, 즉 실행 과정에서 발생하는 오류가 있는데, 예외(exception)이란 바로 런타임 오류를 말하는 것으로 예외 처리부에서는 런타임 오류가 발생했을 때 처리할 부분을 기술한다. 예를 들어, 매개변수로 다른 임의의 수를 나누는 로직이 있는데 만약 이 매개변수에 0이 들어오면 오류가 발생할 것이다. 이때 “0으로 나눌 수 없습니다”라는 메시지를 보여주는 처리를 예외 처리부에 기술해 주는 것이다.