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;