🧱 21편. PL/SQL 기본 문법과 블록 구조
PL/SQL은 Oracle의 절차형 언어로, SQL + 프로그래밍 구조(if, loop 등)를 조합하여 복잡한 로직을 처리할 수 있게 합니다.
이번 글에서는 PL/SQL의 기본 구조인 블록 구조와 변수 선언, 흐름 제어 등의 기초 문법을 정리합니다.
📌 1. PL/SQL이란?
Procedural Language / SQL의 약자로, SQL에 조건문, 반복문, 예외 처리 등을 추가한 Oracle 고유의 확장 언어입니다.
데이터베이스 내부에서 절차적 로직을 실행할 수 있어 트리거, 함수, 프로시저 등에 활용됩니다.
🔖 2. PL/SQL 블록 구조
DECLARE
-- 선언부 (선택)
변수 선언
BEGIN
-- 실행부 (필수)
SQL 또는 로직 수행
EXCEPTION
-- 예외 처리부 (선택)
예외 발생 시 처리
END;
- DECLARE: 변수나 상수, 커서 등을 선언
- BEGIN: 실제 로직 실행
- EXCEPTION: 오류 발생 시 대응
- END: 블록 종료
🔧 3. 변수 선언 및 기본 출력
DECLARE
v_name VARCHAR2(50);
BEGIN
v_name := '홍길동';
DBMS_OUTPUT.PUT_LINE('이름: ' || v_name);
END;
DBMS_OUTPUT.PUT_LINE
은 콘솔 출력용으로 자주 사용됩니다.
🔁 4. 제어문 (IF, LOOP)
IF 문
IF v_sal > 3000 THEN
DBMS_OUTPUT.PUT_LINE('고연봉');
ELSE
DBMS_OUTPUT.PUT_LINE('평균 이하');
END IF;
LOOP 문
FOR i IN 1 .. 5 LOOP
DBMS_OUTPUT.PUT_LINE('i = ' || i);
END LOOP;
🚨 5. 예외 처리 구조
BEGIN
-- 0으로 나누기 시도
DECLARE
v_result NUMBER;
BEGIN
v_result := 100 / 0;
EXCEPTION
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE('0으로 나눌 수 없습니다');
END;
END;
NO_DATA_FOUND
: SELECT INTO에서 결과 없을 때TOO_MANY_ROWS
: SELECT INTO에서 2건 이상ZERO_DIVIDE
: 0 나눗셈
🧠 실무 팁
- PL/SQL은 SQL문과 다르게 ;(세미콜론)과 /로 종료 필요
- 스크립트 실행 시에는
SET SERVEROUTPUT ON
명령 필수 - 디버깅은
DBMS_OUTPUT.PUT_LINE
활용
📝 마무리
이번 글에서는 PL/SQL의 기본 블록 구조와 문법을 살펴봤습니다.
다음 글에서는 프로시저, 함수, 트리거의 구조와 작성법을 이어서 설명드리겠습니다.
'database > oracle' 카테고리의 다른 글
🧱 23편. 예외 처리, 변수/레코드 타입, 커스텀 구조 (1) | 2025.05.07 |
---|---|
🧱 22편. 프로시저, 함수, 트리거 만들기 (1) | 2025.05.07 |
🌳 20편. 통계정보 수집과 옵티마이저 힌트 사용법 (0) | 2025.05.07 |
🌳 19편. 실행계획(EXPLAIN PLAN)으로 튜닝하기 (0) | 2025.05.07 |
🌳 18편. Connection Pool과 세션 관리 (1) | 2025.05.07 |
댓글