IT

IT Oracle database 함수(5), 조건 및 제어 함수

nedailylife 2025. 3. 1. 18:28

Oracle database(오라클 데이타베이스) 조건 및 제어 함수 목록

오라클 데이타베이스 조건 및 제어 함수는 SQL 및 PL/SQL에서 데이터 처리와 흐름 제어를 위해 사용됩니다.

database
Database

1. 조건 함수 (CASE, DECODE)

 - CASE 함수

CASE 문은 여러 개의 조건을 평가하여 특정 값을 반환합니다.

SELECT empno, ename, sal,
       CASE 
           WHEN sal >= 5000 THEN 'High Salary'
           WHEN sal >= 3000 THEN 'Medium Salary'
           ELSE 'Low Salary'
       END AS salary_category
FROM emp;

- DECODE 함수

DECODE는 간단한 조건 평가에 사용되며, CASE보다 간결하지만 기능이 제한적입니다.

SELECT empno, ename, sal,
       DECODE(deptno, 10, 'Accounting', 20, 'Research', 30, 'Sales', 'Others') AS dept_name
FROM emp;

 

 

2. 제어 함수 (NVL, NVL2, COALESCE, NULLIF)

제어 함수는 주로 NULL 값을 처리하는 데 사용됩니다.

- NVL 함수

NVL 함수는 NULL 값을 대체하는 데 사용됩니다.

SELECT empno, ename, sal, NVL(comm, 0) AS commission
FROM emp;

(comm 값이 NULL이면 0을 반환)

- NVL2 함수

NVL2는 첫 번째 인수가 NULL인지 여부에 따라 다른 값을 반환합니다.

SELECT empno, ename, sal, NVL2(comm, 'Has Bonus', 'No Bonus') AS bonus_status
FROM emp;

 

- COALESCE 함수

COALESCE는 여러 개의 값을 평가하여 첫 번째 NULL이 아닌 값을 반환합니다.

SELECT empno, ename, COALESCE(comm, bonus, 0) AS final_bonus
FROM emp;

(순서대로 NULL이 아닌 값을 반환)

 

- NULLIF 함수

두 개의 값이 같으면 NULL을 반환하고, 다르면 첫 번째 값을 반환합니다.

SELECT empno, sal, NULLIF(sal, 5000) AS adjusted_salary
FROM emp;

(sal이 5000이면 NULL을 반환)

 

3. 제어 구조 (IF, LOOP, FOR, WHILE)

PL/SQL에서 흐름을 제어하는 구조는 여러 가지가 있습니다.

- IF THEN ELSE

DECLARE
    v_salary NUMBER := 4000;
BEGIN
    IF v_salary > 5000 THEN
        DBMS_OUTPUT.PUT_LINE('High Salary');
    ELSIF v_salary > 3000 THEN
        DBMS_OUTPUT.PUT_LINE('Medium Salary');
    ELSE
        DBMS_OUTPUT.PUT_LINE('Low Salary');
    END IF;
END;
/

 

 

- LOOP 문

 1) 기본 LOOP

DECLARE
    v_counter NUMBER := 1;
BEGIN
    LOOP
        DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
        v_counter := v_counter + 1;
        EXIT WHEN v_counter > 5;
    END LOOP;
END;
/

 2) WHILE LOOP

DECLARE
    v_counter NUMBER := 1;
BEGIN
    WHILE v_counter <= 5 LOOP
        DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
        v_counter := v_counter + 1;
    END LOOP;
END;
/

 3) FOR LOOP

BEGIN
    FOR i IN 1..5 LOOP
        DBMS_OUTPUT.PUT_LINE('Iteration: ' || i);
    END LOOP;
END;
/

 

 

오늘은 오라클 데이타베이스의 조건 및 제어 함수였습니다.

 

 

반응형