Oracle

Oracle.PL/SQL기본

calla1013 2025. 6. 3. 16:30
Oracle PL/SQL 기본 완벽 가이드

📘 Oracle PL/SQL 기본 완벽 가이드: 집합적 언어와 절차적 언어의 만남

PL/SQL은 Oracle SQL에 절차적 프로그래밍 개념을 결합한 언어입니다. 오늘 이 글에서는 변수 선언부터 함수/프로시저까지 실무에서 자주 사용되는 내용만 깔끔한 예제와 함께 소개해드립니다.

1. PL/SQL이란 무엇인가?

PL/SQL은 SQL의 기능을 확장하여 조건문, 반복문, 예외처리 등을 가능하게 해주는 Oracle 전용 프로그래밍 언어입니다.
속도, 안정성, 유지보수성 모두 뛰어난 구조 덕분에 대부분의 Oracle 기반 시스템에서 널리 활용되고 있습니다.

💡 PL/SQL의 강점
- 절차적 로직 구현 가능
- DB 내부에서 실행되므로 성능 우수
- 함수/프로시저로 재사용성 향상

2. PL/SQL 블록 기본 구조

DECLARE
  -- 선언부 (생략 가능)
  변수명 데이터타입 := 초기값;

BEGIN
  -- 실행부
  SQL 문장;
  조건문, 반복문 등;

EXCEPTION
  -- 예외 처리부
  WHEN OTHERS THEN
    예외 처리 문장;
END;

3. 변수와 상수 선언

테이블 컬럼과 동일한 타입을 쓰고 싶을 때는 %TYPE 속성을 사용하세요.

DECLARE
  v_name  employees.first_name%TYPE;
  v_count NUMBER := 0;
  pi      CONSTANT NUMBER := 3.14;

4. 제어문

📌 IF 조건문
IF 조건 THEN
  처리문;
ELSIF 조건2 THEN
  처리문;
ELSE
  처리문;
END IF;
🔁 FOR 반복문
FOR i IN 1..5 LOOP
  DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
🔁 WHILE 반복문
WHILE v_count < 10 LOOP
  v_count := v_count + 1;
END LOOP;

5. 예외 처리

예외 발생 시 사용자 정의 메시지를 출력할 수 있습니다.

BEGIN
  SELECT salary INTO v_sal FROM employees WHERE employee_id = 999;

EXCEPTION
  WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE('해당 사원이 존재하지 않습니다.');
END;

6. 함수(Function) 만들기

CREATE OR REPLACE FUNCTION get_bonus(p_salary NUMBER)
RETURN NUMBER
IS
BEGIN
  RETURN p_salary * 0.1;
END get_bonus;

💡 SELECT에서 호출 가능:

SELECT get_bonus(salary) FROM employees;

7. 프로시저(Procedure) 만들기

CREATE OR REPLACE PROCEDURE emp_info(p_id IN employees.employee_id%TYPE)
IS
  v_name employees.first_name%TYPE;
BEGIN
  SELECT first_name INTO v_name
  FROM employees
  WHERE employee_id = p_id;

  DBMS_OUTPUT.PUT_LINE('이름: ' || v_name);
END emp_info;

💡 실행 방법:

EXEC emp_info(100);

📌 실전 팁: DML과 함께 사용하기

DECLARE
  v_count NUMBER;
BEGIN
  SELECT COUNT(*) INTO v_count FROM employees WHERE department_id = 50;

  IF v_count = 0 THEN
    INSERT INTO employees (employee_id, first_name)
    VALUES (999, '테스트');
  END IF;
END;

🔚 마무리

PL/SQL을 잘 활용하면 SQL만으로는 구현하기 어려운 비즈니스 로직을 효율적으로 처리할 수 있습니다.
오늘 소개한 내용을 바탕으로 프로시저, 함수, 조건문, 반복문을 직접 작성해보면서 익혀보세요!

'Oracle' 카테고리의 다른 글

Oracle.예외처리와 트랜잭션  (0) 2025.06.03
Oracle.정규식(Regular Expressions)  (0) 2025.06.03
Oracle.SQL고급  (0) 2025.06.03
Oracle.조인과 서브쿼리  (0) 2025.05.31
Oracle.그룹 쿼리와 집계함수  (1) 2025.05.31