CHAPTER 07. PL/SQL

starlikedh
|2021. 3. 12. 23:31

 PL/SQL 

- SQL언어에 절차적 언어의 요소를 더하여 데이터의 처리를 좀 더 향상시킨 기능이 PL/SQL이다
- SQL에 선택처리와 반복처리 등의 절차적 언어의 요소를 더하여 DBMS로 하여금 향상된 데이터 처리 능력 부여
- 기본적으로 DECLARE ~ BEGIN ~ EXCEPTION ~ END; 와 같은 구조로 구성

DECLARE PART(선언부) : PL/SQL에서 모든 변수, 상수, 커서 등을 선언하는 부분
BEGIN PART(실행부) : SQL에 선택처리, 반복처리 등을 포함한 실제 로직이 표현되는 부분
EXCEPTION PART(예외처리부) : 실행부의 로직의 처리 중 에러 또는 비정상적인 상황이 발생할 경우,
이를 처리하기 위한 작업을 기술하는 부분

- 변수는 PL/SQL 모듈이 호출될 때 사용되어지는 매개변수와
- 자체 모듈에서만 사용되어지는 변수로 구분
- IS 앞에 선언된 변수는 호출 프로그램과의 연계를 위한 매개변수들이며, 
- IS 다음에 선언되는 변수들은 PL/SQL 모듈에서만 사용되는 변수들
- 변수의 선언 형식은 variable_name [mode] data_type;

 선택처리문

- 프로그램 언어에서 사용되는 선택 처리를 위한 IF문을 PL/SQL에서도 사용할 수 있음

DECLARE
    v_condition number :=1;
BEGIN
    IF v_condition > 1 THEN
        DBMS_OUTPUT.PUT_LINE('데이터의 값은 1보다 큽니다.');
    ELSE
        DBMS_OUTPUT.PUT_LINE('데이터의 값은 1보다 작거나 같습니다.');
    END IF;
END;

 반복처리문

- PL/SQL에서 반복 처리를 수행할 수 있으며 LOOP ~ END LOOP, FOR ~ LOOP, WHILE ~ LOOP 3가지 유형이 있음

LOOP ~ END LOOP
DECLARE
    v_cnt number := 0;
BEGIN
    LOOP
        v_cnt := v_cnt + 1;
        DBMS_OUTPUT.PUT_LINE(v_cnt);
        EXIT WHEN v_cnt = 10; -- cnt가 10이면 종료
    END LOOP;
END;

WHILE ~ LOOP 
DECLARE
    v_cnt number := 0;
    v_str varchar2(10) := null;
BEGIN
    WHILE v_cnt <= 10 LOOP     -- v_cnt 10보다 작거나 같을 동안 실행
        v_cnt := v_cnt+1;
        DBMS_OUTPUT.PUT_LINE(v_cnt);
    END LOOP;
END;