Procedure Function MySQL Tutorial

A function can be used directly from within a SELECT, INSERT, or UPDATE statement.
The result of that function is either saved in the table or returned with the output.
Stored procedures may not return any results.
A stored function always returns a single value.
A stored procedure is executed with an explicit statement: the CALL command.

mysql> delimiter $$
mysql>
mysql> CREATE FUNCTION myFunction(
    ->         in_title          VARCHAR(4),
    ->         in_gender         CHAR(1),
    ->         in_firstname      VARCHAR(20),
    ->         in_middle_initial CHAR(1),
    ->         in_surname        VARCHAR(20))
    ->
    ->   RETURNS VARCHAR(60)
    -> BEGIN
    ->   DECLARE l_title               VARCHAR(4);
    ->   DECLARE l_name_string         VARCHAR(60);
    ->
    ->   IF ISNULL(in_title)  THEN
    ->      IF in_gender='M' THEN
    ->         SET l_title='Mr';
    ->      ELSE
    ->         SET l_title='Ms';
    ->      END IF;
    ->   END IF;
    ->
    ->   IF ISNULL(in_middle_initial) THEN
    ->      SET l_name_string=l_title||' '||in_firstname||' '||in_surname;
    ->   ELSE
    ->      SET l_name_string=l_title||' '||in_firstname||' '||
    ->                           in_middle_initial||' '||in_surname;
    ->   END IF;
    ->
    ->   RETURN(l_name_string);
    -> END$$
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> delimiter ;
mysql>
mysql> select myFunction('Mrs','M','First','Middle','Last');
+-----------------------------------------------+
| myFunction('Mrs','M','First','Middle','Last') |
+-----------------------------------------------+
| NULL                                          |
+-----------------------------------------------+
1 row in set, 2 warnings (0.00 sec)
mysql>
mysql> select myFunction(null,'M','First','Middle','Last');
+----------------------------------------------+
| myFunction(null,'M','First','Middle','Last') |
+----------------------------------------------+
| 0                                            |
+----------------------------------------------+
1 row in set, 2 warnings (0.02 sec)
mysql>
mysql> drop function myFunction;
Query OK, 0 rows affected (0.00 sec)
mysql>