SQL

PL/SQL

NaZZU 2024. 11. 25. 00:39

PL/SQL의 구성

  • PL/SQL은 SQL에 절차적 언어의 요소를 더한 기능
  • 절차적 언어 요소
    • 선택처리(IF)
    • 반복처리(LOOP, WHILE, FOR)
  • 향상된 데이터 처리 능력을 부여함
DECLARE 선언부
모든 변수, 상수, 커서 등을 선언하는 부분.
BEGIN 실행부
SQL에서 선택처리, 반복처리 등을 포함한 실제 로직이 표현되는 부분.
EXCEPTION 예외 처리부
실행부 로직 처리 중 에러 또는 비정상적인 상황을 처리하기 위한 작업을 기술하는 부분.

 

PL/SQL의 종류

  • PROCEDURE : 프로시저 처리 후 반환. 값의 제한이 없음
  • FUNCTION : 함수 처리 후 반환. 하나의 값 반환
  • PACKAGE : 프로시저나 함수의 그룹
  • TRIGGER : 조건에 맞는 이벤트가 일어나면 후속 이벤트가 발생

변수

변수명 [모드] 데이터 타입
  • 매개변수, 자체변수
  • IS 로 구분됨
  • IS 다음의 자체 변수는 mode 생략
  • 매개변수는 역할에 따라
    • IN : 프로시저가 호출될 때 전달되는 값을 처리하기 위한 변수
    • OUT :  프로시저가 처리된 후 반환되는 값을 처리하기 위한 변수
    • INOUT :  두가지 기능을 갖는 변수

변수 타입

  • 스칼라(scalar) 타입
    • NUMBER, CHAR, VARCHAR2, DATE, BOOLEAN 등
  • 참조(reference) 타입
    • %TYPE
    • %ROWTYPE

선택처리문 (IF ~ ENDIF)

declare - 선언부
v_condition number := 2;
begin
IF v_condition < 1 then
dbms_output.put_line(‘대한’);
ELSIF v_condition = 1 then
dbms_output.put_line(‘민국’);
ELSE
dbms_output.put_line(‘만세’);
END IF;
end; 

 


반복 처리문 

Loop ~ END LOOP

declare

v_cnt number := 0;

v_sum number := 0;

 begin

  LOOP

   v_cnt := v_cnt + 1;

   v_sum := v_sum + v_cnt;

   dbms_output.put_line(v_cnt||" " ||v_sum);

   EXIT WHEN v_cnt = 10;

  END LOOP

end;

 

FOR ~ END LOOP

declare

v_cnt number := 0;

v_sum number := 0;

 begin

FOR v_cnt 1..10 LOOP

 v_sum := v_sum + v_cnt;

 dbms_output.put_line(v_cnt||" " ||v_sum);

END LOOP;

end;

 

WHILE ~ END LOOP

declare

v_cnt number := 0;

v_sum number := 0;

 begin

 WHILE v_cnt <= 10 LOOP

  v_cnt := v_cnt + 1;

  v_sum  := v_sum + v_cnt;

  dbms_output.put_line(v_cnt||" "||v_sum);

 END LOOP;

end;