Specialty/Oracle

오라클 (Oracle) PL/SQL 에 대해서 알아보자.

cailisin 2015. 3. 25. 14:29


오라클 (Oracle) PL/SQL 에 대해서 알아보자.



-- Last Update 2015.03.24



-- 일단 이번 포스팅에서는 PL/SQL 에 대해서 간략하게나마 알아보자.



PL/SQL 은 무엇이고 문법은 어떻게 되지??



■ PL/SQL 이란?


1. Procedural Language/SQL 의 약자

2. Oracle 에서 제공하는 데이터베이스 언어

  -- 즉, Oracle 전용 SQL 인 것이다.

3. SQL에서 프로그래밍 언어의 역할을 함

  -- 변수를 만들고 반복문 등을 수행할 수 있다.



■ PL/SQL 문법 


DECLARE

[ 선언 ]

BEGIN

[ 실행 ]

EXCEPTION

[ 예외처리 ]

END;


-- DECLARE / 선언 : 변수들을 정의

-- BEGIN / 실행 : 실제 실행될 PL/SQL 이 들어감 (필수!!)

-- EXCEPTION / 예외처리 : 예외 발생 구문을 적는 부분


일단 문법이라고 해놓았지만 위 단락을 PL/SQL Block 라고 부르기도 한다.



■ PL/SQL 샘플(?)


DECLARE

box    NUMBER;

BEGIN

SELECT empno INTO box

FROM emp

WHERE ename='WARD'

DBMS_OUTPUT.PUT_LINE(box);

EXCEPTION

WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('No Data!!!');

END;





-- Oracle 이 샘플로 제공하는 scott 계정으로 테스트 해보시면 됩니다.

위의 PL/SQL 을 간단히 설명하면 WARD 가 있으면 그의 사번 (empno) 를 조회해 와서 box 변수에 넣은 후

box 변수에 있는 값을 출력해 달라는 구문이다.

단, 해당 값이 없으면 'No Data!!!' 라고 예외 구문을 발생 시키도록 되어있다.


그런데 그냥 따라하면 PL/SQL의 결과가 안보인다~(!!)

결과를 보려면 아래 설정이 필요하다.



PL/SQL 사용을 위한 기본 설정 및 확인 법



■ SERVEROUTPUT 설정


SQL> SET SERVEROUTPUT ON;


기본적으로 PL/SQL은 결과물을 보여주지 않는다.

결과물을 보고 싶다면 SERVEROUTPUT 설정 을 ON 으로 설정해 주어야 한다.


■ Error~!?


SQL> SHOW ERRORS;


PL/SQL 은 오류를 안보여준다.

그렇기 때문에 위 명령어로 확인 한다.





맨 위의 예제를 실행하고 SERVEROUTPUT 옵션의 확인과 ERRORS 확인을 해본 것이다.

OFF 옵션일때는 결과가 안나오지만 ON 옵션일때 7521 이라는 결과 값이 나왔다.

그리고 Error 확인시 Error 는 없는 것으로 나오고 있다.



PL/SQL 의 실행 구조(?)



나중에 Oracle 을 상세하게 공부한다면 이런 부분도 참 중요하다고한다~(!?)





1. PL/SQL Block 실행

2. PL/SQL 엔진에서 PL/SQL 부분과 일반 SQL 부분이 분리

3. SQL 부분을 Database Server 가 처리

4. Database Server 에서 처리된 SQL 결과를 PL/SQL Engine 로 전달

5. PL/SQL Engine 에서 처리된 SQL 결과를 바탕으로 나머지 작업 수행


내가 직접그린(!!) 그림상으로는 3번까지로만 보이지만(?) 4, 5번의 과정이 이루어진다는 것을 알아두자.