CASE | DECODE | IF ELSE - Conditional Logic in PLSQL

Pranav Bakare - Sep 24 - - Dev Community

1. CASE Statement

The CASE statement is flexible and allows for complex conditional logic based on multiple conditions.

Syntax


CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

Enter fullscreen mode Exit fullscreen mode

SQL Example

SELECT employee_id,
       first_name,
       salary,
       CASE
           WHEN salary > 5000 THEN 'High'
           WHEN salary BETWEEN 3000 AND 5000 THEN 'Medium'
           ELSE 'Low'
       END AS salary_category
FROM employees;
Enter fullscreen mode Exit fullscreen mode

Explanation:

  • This SQL query selects the employee_id, first_name, and salary from the employees table.
  • It categorizes the salary into three categories: "High" for salaries greater than 5000, "Medium" for salaries between 3000 and 5000, and "Low" for salaries below 3000.

2. DECODE Function

The DECODE function is an Oracle-specific function used for equality checks in conditional logic.

Syntax

DECODE(expression, search1, result1, search2, result2, ..., default_result)
Enter fullscreen mode Exit fullscreen mode

SQL Example

SELECT employee_id,
       first_name,
       salary,
       DECODE(salary,
              5000, 'High',
              3000, 'Medium',
              'Low') AS salary_category
FROM employees;
Enter fullscreen mode Exit fullscreen mode

Explanation:

  • In this SQL query, the DECODE function checks the salary value.
  • If the salary equals 5000, it returns 'High'; if it equals 3000, it returns 'Medium'; otherwise, it returns 'Low'.
  • This is a more straightforward way to handle conditions when you are comparing specific values.

3. IF-THEN-ELSE (PL/SQL Block)

The IF-THEN-ELSE statement is used in PL/SQL blocks for implementing conditional logic.

Syntax

IF condition THEN
    -- statements
ELSIF condition THEN
    -- statements
ELSE
    -- statements
END IF;
Enter fullscreen mode Exit fullscreen mode

PL/SQL Example

DECLARE
   v_salary NUMBER := 4000;  -- Initializing a salary variable
   v_category VARCHAR2(10);   -- Variable to hold the salary category
BEGIN
   IF v_salary > 5000 THEN
      v_category := 'High';   -- Set category to 'High'
   ELSIF v_salary BETWEEN 3000 AND 5000 THEN
      v_category := 'Medium'; -- Set category to 'Medium'
   ELSE
      v_category := 'Low';    -- Set category to 'Low'
   END IF;

   DBMS_OUTPUT.PUT_LINE('Salary Category: ' || v_category); 
-- Output the result
END;
Enter fullscreen mode Exit fullscreen mode

Explanation:

  • In this PL/SQL block, the variable v_salary is initialized with a value of 4000.
  • The IF-THEN-ELSE statement checks the value of v_salary and assigns the appropriate category to v_category.
  • Finally, it outputs the category using DBMS_OUTPUT.PUT_LINE.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .