본문 바로가기

DB

Oracle(PL /SQL ) 기본구조

반응형

PL / SQL 소스 프로그램의 기본 단위를 블록 이라고 하는데, 블록은 선언부, 실행부, 예외 처리 부로 구성된다. 이 블록은 다시 이름이 없는 블록과 이름이 있는 블록으로 구분할 수 있는데 전자에 속하는 것이 익명 블록이며 , 함수, 프로시저, 패키지 등이 후자에 속한다. 

PL/ SQL 의 블록 구조는 다음과 같다.

 

이름부
IS(AS)
선언부
BEGIN
실행부
EXCEPTION
예외 처리부
END;

이름부 : 블록의 명칭이 오는데, 생략할 때는 익명 블록이 된다.

선언부: DECLARE로 시작되며 , 실행부와 예외 처리부에서 사용할 각종 변수, 상수, 커서 등을 선언한다. 중요한 점은 변수 선언이나 실행부와 예외 처리부에서 사용하는 각종 문장의 끝에 반드시 세미콜론을 찍어야 한다는 것이다 세미콜론이 없으면 오류가 발생한다.

사용할 변수나 상수가 없다면 선언부를 생략할수 있다.

실행부: 실제 로직을 처리하는 부분이다. 이 부분에는 각종 문장(일반 SQL문 ,조건문,반복문 등) 이 올수 있고, 이러한 문장을 사용해 비지니스 로직을 구현하는 것이다. 하지만  SQL 문장 중 DDL 문은 사용할 수 없고 DMI 문만 사용 할 수 있으며 모든 문장의 끝에는 세미콜론을 붙여야 한다.

 

예외처리부: EXCEPTION 절로 시작되는 부분으로 실행부에서 로직을 처리하다가 오류가 발생하면 처리할 내용을 기술하는 부분으로 예외 처리부는 생략이 가능하다.  PL/SQL에서 말하는 오류는 크게 두 가지로 나눌 수 있다. PL/SQL 코드 컴파일 과정에서 발생하는 오류와 런타임, 즉 실행 과정에서 발생하는 오류가 있는데 ,예외(EXCEPTION) 이란 바로 런타임 오류를 말하는 것으로 예외 처리부에서는 런타임 오류가 발생했을때 처리할 부분을 기술한다. 예를 들어, 매개변수로 다른 임의의 수를 나누는 로직이 있는데 만약에 매개변수에 0이 들어 오면 발생할 것이다. 이때 0으로 나눌 수 없습니다. 라는 메시지를 보여주는 처리를 예외 처리부에 기술 해주는것이다.

 

익명블록

이름이 없는 익명블록을 사용해 PL/SQL 코드를 작성해보자 .

 

DECLARE
    vi_num NUMBER;
    BEGIN
    vi_num := 100;
    
    DBMS_OUTPUT.PUT_LINE(vi_num);
    END;

 

DECLARE 다음에 실행부에서 사용할 변수를 선언했다. 변수를 선언할 때도 끝에 반드시 세미콜론 을 붙여야 한다. PL/SQL 에서는 SQL에서 사용하는 모든 데이터 타입을 사용할 수 있다. 위 코드에서는 vi_num이란 NUMBER 형 변수를 선언했는데, PL/SQL 에서 값의 할당은 다른 프로그래밍 언어와 달리 등호(=)가 아닌 :=이다. 즉 특정 변수에 := 를 기준으로 오른쪽 값을 왼쪽에 할당한다는 뜻이다.

 

BEGIN 으로 시작되는 실행부에서는 vi_num 변수에 100을 할당하고 나서, DBMS_OUTPUT.PUT_LINE 이란 함수의 매개변수로 이변수를 전달했다. 

위쿼리를 실행하면 완료됫다고만 확인되지 결과값은 출력되지 않았다.  DBMS_OUTPUT 패키지를 사용해 값을 보려면 특별한 처리를 해줘야  한다.

SET SERVEROUTPUT ON
SET TIMING ON
DECLARE 
    vi_num NUMBER;
    BEGIN
    vi_num := 100;
    DBMS_OUTPUT.PUT_LINE(vi_num);
    END;

SET SERVEROUTPUT ON , TIMING ON 절로 확인할수 있다 결과값이 100 과 경과시간을 알수 있다.

 

반응형

'DB' 카테고리의 다른 글

Oracle(PL/SQL) 제어문  (0) 2020.12.24
Oracle(PL/SQL) 구성요소  (0) 2020.12.24
Oracle(표현식)  (0) 2020.12.23
Oracle(의사컬럼)  (0) 2020.12.23
Oracle(MERGE)  (0) 2020.12.23