This Oracle tutorial explains how to use the Oracle/PLSQL CASE statement with syntax and examples.
The Oracle/PLSQL CASE statement has the functionality of an IF-THEN-ELSE statement. Starting in Oracle 9i, you can use the CASE statement within a SQL statement.
The syntax for the CASE statement in Oracle/PLSQL is:
Optional. It is the value that you are comparing to the list of conditions. (ie: condition_1, condition_2, ... condition_n)
The conditions that must all be the same datatype. The conditions are evaluated in the order listed. Once a condition is found to be true, the CASE statement will return the result and not evaluate the conditions any further.
Results that must all be the same datatype. This is the value returned once a condition is found to be true.
The CASE statement returns any datatype such as a string, numeric, date, etc. (BUT all results must be the same datatype in the CASE statement.) If all conditions are not the same datatype, an >ORA-00932 error will be returned. If all results are not the same datatype, anORA-00932 error will be returned. If no condition is found to be true, then the CASE statement will return the value in the ELSE clause. If the ELSE clause is omitted and no condition is found to be true, then the CASE statement will return NULL.
The CASE statement can be used in the following versions of Oracle/PLSQL:
The CASE statement can be used in Oracle/PLSQL.
You could use the CASE statement in a SQL statement as follows: (includes the expression clause)
Or you could write the SQL statement using the CASE statement like this: (omits the expression clause)
The above two CASE statements are equivalent to the following IF-THEN-ELSE statement:
The CASE statement will compare each owner value, one by one.
One thing to note is that the ELSE clause within the CASE statement is optional. You could have omitted it. Let's look at the SQL statement above with the ELSE clause omitted.
Your SQL statement would look as follows:
With the ELSE clause omitted, if no condition was found to be true, the CASE statement would return NULL.
Here is an example that demonstrates how to use the CASE statement to compare different conditions:
Question: Can you create a CASE statement that evaluates two different fields? I want to return a value based on the combinations in two different fields.
Answer: Yes, below is an example of a case statement that evaluates two different fields.
So if supplier_name field is CISCO and the supplier_type field is Hardware, then the CASE statement will return North office. If the supplier_name field is CISCO and the supplier_type is Software, the CASE statement will return South office.