Sei sulla pagina 1di 5

Ex no : 6

Program for If, nested if and CASE expression

AIM:
To Create program that includes the features NESTED IF, CASE and CASE
expression. The program can be extended using the NULLIF and COALESCE functions
IF Syntax
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
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
COALESCE
Returns the first nonnull expression among its arguments.
Syntax
COALESCE ( expression [ ,...n ] )
If all arguments are NULL, COALESCE returns NULL.
COALESCE(expression1,...n) is equivalent to this CASE function:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
ThesyntaxfortheNULLIF()functionisasfollows:
NULLIF(<expression1>,<expression2>)
PROGRAM:
mysql> use anand;
Database changed
mysql> DELIMITER //
mysql>
mysql> 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 //
Query OK, 0 rows affected (0.03 sec)
mysql> delimiter ;
mysql> select SimpleCompare(1,2);
+--------------------+
| SimpleCompare(1,2) |
+--------------------+
|1<2
|
+--------------------+
1 row in set (0.00 sec)
mysql> delimiter //
mysql> create function asa(a1 varchar(10),a2 varchar(10))
-> returns varchar(10) begin
-> declare a3 varchar(10);
-> if a1='acme' then
-> if a2='sales' then
-> set a3 :='acme sales';
-> elseif a2='it' then
-> set a3 :='acme sales';
-> elseif a2='hr' then
-> set a3 :='acme hr';
-> end if;
-> elseif a1 ='corp' then
-> set a3 :='plz enter acme';
-> end if;
-> return a3;
-> end
-> //
mysql> select asa('acme','hr');
-> //
+------------------+
| asa('acme','hr') |
+------------------+
| acme hr
|
+------------------+
1 row in set (0.00 sec)
mysql> delimiter //
mysql> create function zzz(a1 int,a2 varchar(10))
-> returns varchar(10)
-> begin
-> declare a3 varchar(10);
-> case
-> when a2 ='num' then
-> set a3 = 'good';
-> when a1 = 1 then set a3 = 'very good';
-> when a1 = 2 then set a3 = 'great';
-> when a1 = 3 then set a3 = 'stupendous';
-> else
-> set a3 = 'bad';
-> end case;
-> return a3;
-> end
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

mysql> select zzz(3, 'num');


+---------------+
| zzz(3, 'num') |
+---------------+
| good
|
+---------------+
1 row in set (0.00 sec)
mysql> select zzz(3, 'numb');
+----------------+
| zzz(3, 'numb') |
+----------------+
| stupendous |
+----------------+
1 row in set (0.00 sec)
mysql> select zzz(5, 'numb');
+----------------+
| zzz(5, 'numb') |
+----------------+
| bad
|
+----------------+
1 row in set (0.00 sec)
mysql> select zzz(2, 'numb');
+----------------+
| zzz(2, 'numb') |
+----------------+
| great
|
+----------------+
1 row in set (0.00 sec)
mysql> select zzz(1, 'numb');
+----------------+
| zzz(1, 'numb') |
+----------------+
| very good
|
+----------------+
1 row in set (0.00 sec)
mysql> show tables;
+-----------------+
| Tables_in_anand |
+-----------------+
| student
|
| students
|
+-----------------+
2 rows in set (0.02 sec)
mysql> select * from students;
+------+-------+------+------+------+-------+
| sno | sname | m1 | m2 | m3 | total |
+------+-------+------+------+------+-------+
| 111 | ram | 90 | 90 | 90 | 1000 |
| 112 | raj | 90 | 80 | 90 | 1000 |
| 131 | rm | 90 | 90 | 90 | 1000 |
| 132 | m | 90 | 90 | 90 | 1000 |
+------+-------+------+------+------+-------+
4 rows in set (0.04 sec)
mysql> select nullif(10*20,20*10);
+---------------------+
| nullif(10*20,20*10) |

+---------------------+
|
NULL |
+---------------------+
1 row in set (0.00 sec)
mysql> select nullif(10*20,20*100);
+----------------------+
| nullif(10*20,20*100) |
+----------------------+
|
200 |
+----------------------+
1 row in set (0.00 sec)
mysql> select nullif(5+7/4*2,2);
+-------------------+
| nullif(5+7/4*2,2) |
+-------------------+
|
8.5000 |
+-------------------+
1 row in set (0.00 sec)
mysql> select nullif(5+7/4*2,2+11/2);
+------------------------+
| nullif(5+7/4*2,2+11/2) |
+------------------------+
|
8.5000 |
+------------------------+
1 row in set (0.00 sec)
mysql> select nullif(5+7/4*2,3+11/2);
+------------------------+
| nullif(5+7/4*2,3+11/2) |
+------------------------+
|
NULL |
+------------------------+
1 row in set (0.00 sec)
mysql> select * from students;
+------+-------+------+------+------+-------+
| sno | sname | m1 | m2 | m3 | total |
+------+-------+------+------+------+-------+
| 111 | ram | 90 | 90 | 90 | 1000 |
| 112 | raj | 90 | 80 | 90 | 1000 |
| 131 | rm | 90 | 90 | 90 | 1000 |
| 132 | m | 90 | 90 | 90 | 1000 |
+------+-------+------+------+------+-------+
4 rows in set (0.00 sec)
mysql> select sno,sname,coalesce(total,4) from students;
+------+-------+-------------------+
| sno | sname | coalesce(total,4) |
+------+-------+-------------------+
| 111 | ram |
1000 |
| 112 | raj |
1000 |
| 131 | rm |
1000 |
| 132 | m |
1000 |
+------+-------+-------------------+
4 rows in set (0.00 sec)

RESULT:
The above prgrams are created and executed successfully.

Potrebbero piacerti anche