PL/SQL 개념 정의 구조

PL/SQL 개념

 Procedural Language Extension to Structured Query Language(SQL) 의 약자인데요, 한국어로 SQL을 확장한 순차적 처리언어라고 할 수 있습니다. 다시말해서 PL/SQL은 데이터베이스 질의어인 SQL과 일반 프로그래밍 언어의 특성을 결합한 언어라고 보면 됩니다. PL/SQL을 사용하면 앞에서 언급한 조건문이나 반복문, 변수나 상수를 선언해서 사용할 수 있을 뿐만 아니라 SQL도 사용할 수 있습니다. PL/SQL은 Oracle이 등장한 초기부터 만들어진 것은 아닙니다. SQL이 데이터베이스 질의 언어로서 매우 강력하고 유용한 것은 사실이지만 시간이 갈수록 DBMS의 역할이 커지고 SQL을 넘어서 일반 프로그래밍 언어를 처리할 수 있는 기능이 필요하게 된것입니다. 

 

PL/SQL 기본 구조

PL/SQL 기본 단위는 블록(Block)입니다. 하나의 블록은 다시 다음과 같이 세 부분으로 구분됩니다.

1. 선언부(declarative part)

 선언부는 말 그대로 실행부에서 사용할 변수나 상수를 선언하는 부분입니다. 프로그래밍 언어에서 처럼 변수와 상수들을 선언할 수 있는데 PL/SQL은 반드시 이들을 선언부에서만 선언해야 합니다. 선언부는 DECLARE를 사용해서 나타냅니다.

2. 실행부(executable part)

 실체 처리할 로직을 담당하는 부분입니다.

선언된 변수에 값을 할당하거나 IF나 WHILE 문장을 사용하거나 SQL 문장을 사용하는 등 기존 SQL 문장들을 순차적으로 사용하여 블록 단위로 한 번에 처리할 수 있다는 장점이 있겠습니다.

실행부는 BEGIN 으로 시작해서 END 로 끝나게 됩니다.

3. 예외처리부(exception-building part)

실행부에서 로직을 처리하던 중에 발생할 수 있는 각종 오류들에 대해서 처리하는 부분입니다. Oracle에서는 SQL문장 실행할 때 오류가 발생하게 된다면 자동으로 ORA-XXXX 오류번호와 함께 메시지가 반환되는데 사용자가 직접 이러한 메시지를 대체하거나 오류가 발생할 경우 처리할 로직을 기술하는 부분입니다. JAVA와 같은 프로그래밍 언어의 Try Catch 문에서 Catch 에 해당하는 부분이라고 생각하면 되겠습니다. Oracle 에서 오류는 예외라고 부르고 EXCEPTION 키워드를 사용합니다.

아래는 예시입니다.

DECLARE

    counter INTEGER;

BEGIN

    counter := counter + 1;

    IF counter Is NULL THEN

        dbms_output.put_line('Result : COUNTER IS NULL');

    END IF:

END;

 

DECLARE 키워드를 사용한 선언부에는 counter라는 INTEGER형 변수를 사용했습니다. 변수 선언은 다른 프로그래밍 언어와 같이 변수명 데이터타입 형태로 선언되고 맨 끝에 ; 을 붙이는데 변수선언이나 하나의 문장 종료시점에 표시하기위해 세미콜론(;)을 붙입니다. 블록 내에서 사용할 수 있는 데이터 타입은 SQL에서 사용하는 데이터 타입과 같습니다.

BEGIN 키워드가 사용된 부분부터 실행부가 시작되고 counter라는 변수에 자신의 값에 1 을 더한 값을 다시 할당했습니다. counter값을 1씩 증가시키고 있는데요, 값을 할당할 때 =가 아니라 :=로 넣어줘야 한다는 것을 잊지마세요.

조건문의 하나인 IF문이 등장하는데 마침은 END IF로 맺어줍니다.

dbms_output.put_line 이 있는데, Oracle 에서 제공하는 시스템 패키지로서 일반 프로그래밍 언어에서 사용하는 메시지 박스와 같은 역할을 수행합니다. 그리고 EXCEPTION은 생략이 가능하다는 것을 알아두시기 바랍니다.

 

DBMS_OUTPUT 패키지를 사용해서 메시지 박스처럼 사용하려면 SQL*Plus에서 아래와 같은 명령어를 입력해야 합니다.

SQL > SET SERVEROUTPUT ON;

 

 

 

반응형