Mega Code Archive

 
Categories / MySQL Tutorial / Procedure Function
 

CASE Statement with Condition Checks

The CASE control can also operate without an initial case value, evaluating a condition on each WHEN block. mysql> 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> mysql> select myFunction(1,1); +-----------------+ | myFunction(1,1) | +-----------------+ |               2 | +-----------------+ 1 row in set (0.00 sec) mysql> mysql> select myFunction(2,2); +-----------------+ | myFunction(2,2) | +-----------------+ |              15 | +-----------------+ 1 row in set (0.00 sec) mysql> mysql> select myFunction(3,3); +-----------------+ | myFunction(3,3) | +-----------------+ |              10 | +-----------------+ 1 row in set (0.00 sec) mysql> mysql> drop function myFunction; Query OK, 0 rows affected (0.00 sec)