This is regarding your second question--DECODE ver IF-THEN-ELSE
----------------------------------------------------------------------------------------------------------
In Oracle/PLSQL, the decode function has the functionality of an IF-THEN-ELSE statement.
The syntax for the decode function is:
decode( expression , search , result [, search , result]... [, default] )
Expression is the value to compare.
Search is the value that is compared against expression.
Result is the value returned, if expression is equal to search.
default is optional. If no matches are found, the decode will return default. If default is omitted, then the decode statement will return null (if no matches are found).
For Example:
You could use the decode function in an SQL statement as follows:
-
SELECT supplier_name,
-
decode(supplier_id, 10000, 'HCL',
-
10001, 'SPA',
-
10002, 'SPIDER',
-
'SVNT') result
-
FROM suppliers;
-
The above decode statement is equivalent to the following IF-THEN-ELSE statement:
-
IF supplier_id = 10000 THEN
-
result := 'HCL';
-
ELSIF supplier_id = 10001 THEN
-
result := 'SPA';
-
ELSIF supplier_id = 10002 THEN
-
result := 'SPIDER';
-
ELSE
-
result := 'SVNT';
-
END IF;
-
The decode function will compare each supplier_id value, one by one.
The main difference is Decode can be used directly in SQL where as
IF-THEN-ELSE
being a structure can only be used in PL/SQL
You can use CASE instead of if-then
Performance wise case is faster than if-then and can be used in SQL .