[Oracle] PL/SQL(Procedural language/SQL)의 정의와 종류, 기본구조 예제 실습

PL/SQL(Procedural language/SQL)의 정의


PL/SQL은 오라클에서 제공하는 프로그래밍 언어이며 일반 프로그래밍 언어적인 요소를 다 가지고 있고 데이터베이스 업무를 처리하기 위한 최적화된 언어이다.

SQL은 비절차적(Non-Procedural) 언어이지만 PL/SQL은 SQL을 확장한 절차적(Procedural) 언어이다.  


비절차적 언어라는 것은 데이터베이스 사용자(이하 사용자)가 SQL을 사용해 원하는 작업의 결과만 기술하고, 그 작업이 어떻게 수행될 것인지는 전혀 고려하지 않아도 된다는 것을 의미한다.



PL/SQL(Procedural language/SQL)의 종류

PL/SQL의 종류는 크게는 익명블록(anonymous PL/SQL Block)과 저장블록(stored PL/SQL BLock)으로 나뉠 수 있는데 익명블록은 주로 일회성으로 사용할 경우 사용되고 저장블록은 서버에 저장해 놓고 주기적으로 반복해서 사용할 경우 사용된다.


저장블록의 종류는 프로시저, 함수, 패키지, 트리거가 있다.


프로시저(Procedural) : 리턴 값을 하나 이상 가질 수 있는 프로그램을 말한다.

함수(Function) : 리턴 값을 반드시 반환해야 하는 프로그램을 말한다.

패키지(Package) : 하나 이상의 프로시저, 함수, 변수, 예외 등의 묶음을 말한다.

트리거(Trigger) : 지정된 이벤트가 발생하면 자동으로 실행되는 PL/SQL 블록이다.



PL/SQL(Procedural language/SQL)의 기본구조


PL/SQL의 기본구조는 선언부, 실행부, 예외처리부로 나뉠수 있다.


    • 선언부(Declare) : 모든 변수나 상수를 선언하는 부분
    • 실행부(Executable) : begin ~ end / 제어문, 반복문, 함수정의 등의 로직을 기술하는 부분 
    • 예외처리부(exception) : 실행도중에 에러 발생시 해결하기 위한 명령들을 기술하는 부분


Declare, begin, exception 키워드들은 ;을 붙이지 않고, 나머지 문장들은 ;으로 처리한다.



PL/SQL의 기본구조는 아래와 같다.


익명블록(anonymous PL/SQL Block) 구조
DECLARE
    -- 선언
BEGIN
    -- 구현
END;

저장블록(Stored PL/SQL Block) Function 구조
FUNCTION 이름(
)    RETURN
IS
    -- 선언
BEGIN
    -- 구현
END;

DECLARE는 예약어이기 때문에 ;을 붙이지 않는다.

END에는 ;을 붙여서 프로시저의 끝을 알려준다.

예외처리는 생락가능하다.



PL/SQL(Procedural language/SQL) 예제 실습


DECLARE
    cnt integer;
BEGIN
    cnt := cnt+1;
    if cnt is null then
        dbms_output.put_line('결과 : cnt는 널이다');
    end if;
END;
cs

출력결과
결과 : cnt는 널이다
 

다른 언어와는 다르게 할당 연산자가 "=" 이 아니라 ":=" 임을 명심해야 한다.



출처: 
https://nrhan.tistory.com/entry/PLSQL-개관-1-정의-특징-장점?category=903218 [코딩과 금융 시장]
인프런 강의/오라클 데이터베이스 11g 프로그래밍(하)

댓글

Designed by JB FACTORY