Ex No: 6 Program For If, Nested If and CASE Expression
Ex No: 6 Program For If, Nested If and CASE Expression
Ex No: 6 Program For If, Nested If and CASE Expression
IF
IF Syntax
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
Example 1:
DELIMITER //
CREATE FUNCTION SimpleCompare(n INT, m INT)
RETURNS VARCHAR(20)
BEGIN
DECLARE s VARCHAR(20);
IF n > m THEN SET s = '>';
ELSEIF n = m THEN SET s = '=';
ELSE SET s = '<';
END IF;
SET s = CONCAT(n, ' ', s, ' ', m);
RETURN s;
END //
DELIMITER ;
Example 2 : Nested If
//
create function iffunction(p_comp VARCHAR(10),p_divi VARCHAR(10))
returns VARCHAR(10)
begin
declare l_value VARCHAR(30);
if p_comp = ACME then
if p_divi = SALES then
set l_value := You entered ACME Sales;
elseif p_divi = HR then
set l_value := You entered ACME HR;
elseif p_divi = IT then
set l_value := You entered ACME IT;
end if;
elseif p_comp = CORP then
if p_divi = SALES then
set l_value := You entered CORP Sales;
elseif p_divi = HR then
set l_value := You entered CORP HR;
elseif p_divi = IT then
set l_value := You entered CORP IT;
end if;
end if;
return l_value;
end
//
CASE Syntax
The CASE statement for stored programs implements a complex conditional construct.
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
[or]
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
Example 3:
mysql> DELIMITER //
mysql> CREATE FUNCTION myFunction(delivery_day INT(1),preferred INT(1))
-> RETURNS INT(2)
-> BEGIN
->
-> DECLARE shipping_cost INT(2) DEFAULT 0;
->
-> CASE
-> WHEN preferred = 1 THEN
->
SET shipping_cost = 2;
-> WHEN delivery_day = 1 THEN
->
SET shipping_cost = 20;
-> WHEN delivery_day = 2 THEN
->
SET shipping_cost = 15;
-> WHEN delivery_day = 3 THEN
->
SET shipping_cost = 10;
-> ELSE
->
SET shipping_cost = 5;
-> END CASE;
-> RETURN shipping_cost;
->
-> END
-> //
Query OK, 0 rows affected (0.01 sec)
mysql> DELIMITER ;
mysql> select myFunction(1,1);
+-----------------+
| myFunction(1,1) |
+-----------------+
|
2 |
+-----------------+
1 row in set (0.00 sec)
COALESCE
Returns the first nonnull expression among its arguments.
Syntax
COALESCE ( expression [ ,...n ] )
If all arguments are NULL, COALESCE returns NULL.