<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=SQL%2FMySQL%2FProcedure_Function%2FIntroduction</id>
		<title>SQL/MySQL/Procedure Function/Introduction - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=SQL%2FMySQL%2FProcedure_Function%2FIntroduction"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=SQL/MySQL/Procedure_Function/Introduction&amp;action=history"/>
		<updated>2026-04-04T21:14:34Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=SQL/MySQL/Procedure_Function/Introduction&amp;diff=5412&amp;oldid=prev</id>
		<title> в 13:46, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=SQL/MySQL/Procedure_Function/Introduction&amp;diff=5412&amp;oldid=prev"/>
				<updated>2010-05-26T13:46:00Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:46, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=SQL/MySQL/Procedure_Function/Introduction&amp;diff=5413&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=SQL/MySQL/Procedure_Function/Introduction&amp;diff=5413&amp;oldid=prev"/>
				<updated>2010-05-26T10:17:14Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Recursion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
Functions and procedures can call themselves.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; delimiter $$&lt;br /&gt;
mysql&amp;gt; CREATE FUNCTION factorial(n BIGINT) RETURNS BIGINT&lt;br /&gt;
    -&amp;gt; BEGIN&lt;br /&gt;
    -&amp;gt;   IF n&amp;gt;=2 THEN&lt;br /&gt;
    -&amp;gt;     RETURN n * factorial(n-1);&lt;br /&gt;
    -&amp;gt;   ELSE&lt;br /&gt;
    -&amp;gt;     RETURN n;&lt;br /&gt;
    -&amp;gt;   END IF;&lt;br /&gt;
    -&amp;gt; END$$&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt; delimiter ;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT factorial(3);&lt;br /&gt;
ERROR 1424 (HY000): Recursive stored functions and triggers are not allowed.&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; drop function factorial;&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use user-defined function in a select statement to deal with data in a table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; CREATE TABLE Employee(&lt;br /&gt;
    -&amp;gt;     id            int,&lt;br /&gt;
    -&amp;gt;     first_name    VARCHAR(15),&lt;br /&gt;
    -&amp;gt;     last_name     VARCHAR(15),&lt;br /&gt;
    -&amp;gt;     start_date    DATE,&lt;br /&gt;
    -&amp;gt;     end_date      DATE,&lt;br /&gt;
    -&amp;gt;     salary        FLOAT(8,2),&lt;br /&gt;
    -&amp;gt;     city          VARCHAR(10),&lt;br /&gt;
    -&amp;gt;     description   VARCHAR(15)&lt;br /&gt;
    -&amp;gt; );&lt;br /&gt;
Query OK, 0 rows affected (0.03 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;              values (1,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  &amp;quot;19960725&amp;quot;,  &amp;quot;20060725&amp;quot;, 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;O&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(2,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;,  &amp;quot;19760321&amp;quot;, &amp;quot;19860221&amp;quot;, 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;O&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(3,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,    &amp;quot;19781212&amp;quot;, &amp;quot;19900315&amp;quot;, 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;U&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(4,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,     &amp;quot;19821024&amp;quot;, &amp;quot;19990421&amp;quot;, 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;U&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(5,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,    &amp;quot;19840115&amp;quot;, &amp;quot;19980808&amp;quot;, 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(6,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,    &amp;quot;19870730&amp;quot;, &amp;quot;19960104&amp;quot;, 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;N&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(7,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,    &amp;quot;19901231&amp;quot;, &amp;quot;19980212&amp;quot;, 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;N&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.01 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(8,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     &amp;quot;19960917&amp;quot;,  &amp;quot;20020415&amp;quot;, 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;N&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; select * from Employee;&lt;br /&gt;
+------+------------+-----------+------------+------------+---------+-----------+-------------+&lt;br /&gt;
| id   | first_name | last_name | start_date | end_date   | salary  | city      | description |&lt;br /&gt;
+------+------------+-----------+------------+------------+---------+-----------+-------------+&lt;br /&gt;
|    1 | Jason      | Martin    | 1996-07-25 | 2006-07-25 | 1234.56 | Toronto   | O           |&lt;br /&gt;
|    2 | Alison     | Mathews   | 1976-03-21 | 1986-02-21 | 6661.78 | Vancouver | O           |&lt;br /&gt;
|    3 | James      | Smith     | 1978-12-12 | 1990-03-15 | 6544.78 | Vancouver | U           |&lt;br /&gt;
|    4 | Celia      | Rice      | 1982-10-24 | 1999-04-21 | 2344.78 | Vancouver | U           |&lt;br /&gt;
|    5 | Robert     | Black     | 1984-01-15 | 1998-08-08 | 2334.78 | Vancouver | Tester      |&lt;br /&gt;
|    6 | Linda      | Green     | 1987-07-30 | 1996-01-04 | 4322.78 | New York  | N           |&lt;br /&gt;
|    7 | David      | Larry     | 1990-12-31 | 1998-02-12 | 7897.78 | New York  | N           |&lt;br /&gt;
|    8 | James      | Cat       | 1996-09-17 | 2002-04-15 | 1232.78 | Vancouver | N           |&lt;br /&gt;
+------+------------+-----------+------------+------------+---------+-----------+-------------+&lt;br /&gt;
8 rows in set (0.02 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; delimiter $$&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; CREATE FUNCTION cust_status(in_status CHAR(1))&lt;br /&gt;
    -&amp;gt;      RETURNS VARCHAR(20)&lt;br /&gt;
    -&amp;gt; BEGIN&lt;br /&gt;
    -&amp;gt;      DECLARE long_status VARCHAR(20);&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt;      IF in_status = &amp;quot;O&amp;quot; THEN&lt;br /&gt;
    -&amp;gt;           SET long_status=&amp;quot;Overdue&amp;quot;;&lt;br /&gt;
    -&amp;gt;      ELSEIF in_status = &amp;quot;U&amp;quot; THEN&lt;br /&gt;
    -&amp;gt;           SET long_status=&amp;quot;Up to date&amp;quot;;&lt;br /&gt;
    -&amp;gt;      ELSEIF in_status = &amp;quot;N&amp;quot; THEN&lt;br /&gt;
    -&amp;gt;           SET long_status=&amp;quot;New&amp;quot;;&lt;br /&gt;
    -&amp;gt;      END IF;&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt;      RETURN(long_status);&lt;br /&gt;
    -&amp;gt; END$$&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; delimiter ;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT cust_status(description) as Status, count(*) as Count&lt;br /&gt;
    -&amp;gt;   FROM employee&lt;br /&gt;
    -&amp;gt;  GROUP BY description&lt;br /&gt;
    -&amp;gt;  ORDER BY cust_status(description);&lt;br /&gt;
+------------+-------+&lt;br /&gt;
| Status     | Count |&lt;br /&gt;
+------------+-------+&lt;br /&gt;
| NULL       |     1 |&lt;br /&gt;
| New        |     3 |&lt;br /&gt;
| Overdue    |     2 |&lt;br /&gt;
| Up to date |     2 |&lt;br /&gt;
+------------+-------+&lt;br /&gt;
4 rows in set, 1 warning (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; drop function cust_status;&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; drop table Employee;&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use user-defined function in order by clause==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; CREATE TABLE Employee(&lt;br /&gt;
    -&amp;gt;     id            int,&lt;br /&gt;
    -&amp;gt;     first_name    VARCHAR(15),&lt;br /&gt;
    -&amp;gt;     last_name     VARCHAR(15),&lt;br /&gt;
    -&amp;gt;     start_date    DATE,&lt;br /&gt;
    -&amp;gt;     end_date      DATE,&lt;br /&gt;
    -&amp;gt;     salary        FLOAT(8,2),&lt;br /&gt;
    -&amp;gt;     city          VARCHAR(10),&lt;br /&gt;
    -&amp;gt;     description   VARCHAR(15)&lt;br /&gt;
    -&amp;gt; );&lt;br /&gt;
Query OK, 0 rows affected (0.03 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;              values (1,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  &amp;quot;19960725&amp;quot;,  &amp;quot;20060725&amp;quot;, 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;O&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(2,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;,  &amp;quot;19760321&amp;quot;, &amp;quot;19860221&amp;quot;, 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;O&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(3,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,    &amp;quot;19781212&amp;quot;, &amp;quot;19900315&amp;quot;, 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;U&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(4,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,     &amp;quot;19821024&amp;quot;, &amp;quot;19990421&amp;quot;, 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;U&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(5,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,    &amp;quot;19840115&amp;quot;, &amp;quot;19980808&amp;quot;, 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(6,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,    &amp;quot;19870730&amp;quot;, &amp;quot;19960104&amp;quot;, 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;N&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(7,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,    &amp;quot;19901231&amp;quot;, &amp;quot;19980212&amp;quot;, 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;N&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(8,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     &amp;quot;19960917&amp;quot;,  &amp;quot;20020415&amp;quot;, 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;N&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; select * from Employee;&lt;br /&gt;
+------+------------+-----------+------------+------------+---------+-----------+-------------+&lt;br /&gt;
| id   | first_name | last_name | start_date | end_date   | salary  | city      | description |&lt;br /&gt;
+------+------------+-----------+------------+------------+---------+-----------+-------------+&lt;br /&gt;
|    1 | Jason      | Martin    | 1996-07-25 | 2006-07-25 | 1234.56 | Toronto   | O           |&lt;br /&gt;
|    2 | Alison     | Mathews   | 1976-03-21 | 1986-02-21 | 6661.78 | Vancouver | O           |&lt;br /&gt;
|    3 | James      | Smith     | 1978-12-12 | 1990-03-15 | 6544.78 | Vancouver | U           |&lt;br /&gt;
|    4 | Celia      | Rice      | 1982-10-24 | 1999-04-21 | 2344.78 | Vancouver | U           |&lt;br /&gt;
|    5 | Robert     | Black     | 1984-01-15 | 1998-08-08 | 2334.78 | Vancouver | Tester      |&lt;br /&gt;
|    6 | Linda      | Green     | 1987-07-30 | 1996-01-04 | 4322.78 | New York  | N           |&lt;br /&gt;
|    7 | David      | Larry     | 1990-12-31 | 1998-02-12 | 7897.78 | New York  | N           |&lt;br /&gt;
|    8 | James      | Cat       | 1996-09-17 | 2002-04-15 | 1232.78 | Vancouver | N           |&lt;br /&gt;
+------+------------+-----------+------------+------------+---------+-----------+-------------+&lt;br /&gt;
8 rows in set (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; delimiter $$&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; CREATE FUNCTION cust_status(in_status CHAR(1))&lt;br /&gt;
    -&amp;gt;      RETURNS VARCHAR(20)&lt;br /&gt;
    -&amp;gt; BEGIN&lt;br /&gt;
    -&amp;gt;      DECLARE long_status VARCHAR(20);&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt;      IF in_status = &amp;quot;O&amp;quot; THEN&lt;br /&gt;
    -&amp;gt;           SET long_status=&amp;quot;Overdue&amp;quot;;&lt;br /&gt;
    -&amp;gt;      ELSEIF in_status = &amp;quot;U&amp;quot; THEN&lt;br /&gt;
    -&amp;gt;           SET long_status=&amp;quot;Up to date&amp;quot;;&lt;br /&gt;
    -&amp;gt;      ELSEIF in_status = &amp;quot;N&amp;quot; THEN&lt;br /&gt;
    -&amp;gt;           SET long_status=&amp;quot;New&amp;quot;;&lt;br /&gt;
    -&amp;gt;      END IF;&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt;      RETURN(long_status);&lt;br /&gt;
    -&amp;gt; END$$&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; delimiter ;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT cust_status(description) as Status, count(*) as Count&lt;br /&gt;
    -&amp;gt;   FROM employee&lt;br /&gt;
    -&amp;gt;  GROUP BY description&lt;br /&gt;
    -&amp;gt;  ORDER BY cust_status(description);&lt;br /&gt;
+------------+-------+&lt;br /&gt;
| Status     | Count |&lt;br /&gt;
+------------+-------+&lt;br /&gt;
| NULL       |     1 |&lt;br /&gt;
| New        |     3 |&lt;br /&gt;
| Overdue    |     2 |&lt;br /&gt;
| Up to date |     2 |&lt;br /&gt;
+------------+-------+&lt;br /&gt;
4 rows in set, 1 warning (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; drop function cust_status;&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; drop table Employee;&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use user-defined function in where clause==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; CREATE TABLE Employee(&lt;br /&gt;
    -&amp;gt;     id            int,&lt;br /&gt;
    -&amp;gt;     first_name    VARCHAR(15),&lt;br /&gt;
    -&amp;gt;     last_name     VARCHAR(15),&lt;br /&gt;
    -&amp;gt;     start_date    DATE,&lt;br /&gt;
    -&amp;gt;     end_date      DATE,&lt;br /&gt;
    -&amp;gt;     salary        FLOAT(8,2),&lt;br /&gt;
    -&amp;gt;     city          VARCHAR(10),&lt;br /&gt;
    -&amp;gt;     description   VARCHAR(15)&lt;br /&gt;
    -&amp;gt; );&lt;br /&gt;
Query OK, 0 rows affected (0.01 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;              values (1,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  &amp;quot;19960725&amp;quot;,  &amp;quot;20060725&amp;quot;, 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(2,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;,  &amp;quot;19760321&amp;quot;, &amp;quot;19860221&amp;quot;, 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(3,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,    &amp;quot;19781212&amp;quot;, &amp;quot;19900315&amp;quot;, 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(4,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,     &amp;quot;19821024&amp;quot;, &amp;quot;19990421&amp;quot;, 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.01 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(5,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,    &amp;quot;19840115&amp;quot;, &amp;quot;19980808&amp;quot;, 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(6,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,    &amp;quot;19870730&amp;quot;, &amp;quot;19960104&amp;quot;, 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(7,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,    &amp;quot;19901231&amp;quot;, &amp;quot;19980212&amp;quot;, 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into Employee(id,first_name, last_name, start_date, end_Date,   salary,  City,       Description)&lt;br /&gt;
    -&amp;gt;               values(8,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     &amp;quot;19960917&amp;quot;,  &amp;quot;20020415&amp;quot;, 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;);&lt;br /&gt;
Query OK, 1 row affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; select * from Employee;&lt;br /&gt;
+------+------------+-----------+------------+------------+---------+-----------+-------------+&lt;br /&gt;
| id   | first_name | last_name | start_date | end_date   | salary  | city      | description |&lt;br /&gt;
+------+------------+-----------+------------+------------+---------+-----------+-------------+&lt;br /&gt;
|    1 | Jason      | Martin    | 1996-07-25 | 2006-07-25 | 1234.56 | Toronto   | Programmer  |&lt;br /&gt;
|    2 | Alison     | Mathews   | 1976-03-21 | 1986-02-21 | 6661.78 | Vancouver | Tester      |&lt;br /&gt;
|    3 | James      | Smith     | 1978-12-12 | 1990-03-15 | 6544.78 | Vancouver | Tester      |&lt;br /&gt;
|    4 | Celia      | Rice      | 1982-10-24 | 1999-04-21 | 2344.78 | Vancouver | Manager     |&lt;br /&gt;
|    5 | Robert     | Black     | 1984-01-15 | 1998-08-08 | 2334.78 | Vancouver | Tester      |&lt;br /&gt;
|    6 | Linda      | Green     | 1987-07-30 | 1996-01-04 | 4322.78 | New York  | Tester      |&lt;br /&gt;
|    7 | David      | Larry     | 1990-12-31 | 1998-02-12 | 7897.78 | New York  | Manager     |&lt;br /&gt;
|    8 | James      | Cat       | 1996-09-17 | 2002-04-15 | 1232.78 | Vancouver | Tester      |&lt;br /&gt;
+------+------------+-----------+------------+------------+---------+-----------+-------------+&lt;br /&gt;
8 rows in set (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; delimiter $$&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; CREATE FUNCTION myFunction(in_rep_id INT)&lt;br /&gt;
    -&amp;gt;      RETURNS INT&lt;br /&gt;
    -&amp;gt;      READS SQL DATA&lt;br /&gt;
    -&amp;gt; BEGIN&lt;br /&gt;
    -&amp;gt;      DECLARE customer_count INT;&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt;      SELECT COUNT(*)&lt;br /&gt;
    -&amp;gt;           INTO customer_count&lt;br /&gt;
    -&amp;gt;        FROM employee&lt;br /&gt;
    -&amp;gt;       WHERE id=in_rep_id;&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt;      RETURN(customer_count);&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt; END$$&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; delimiter ;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT id,myFunction(id)&lt;br /&gt;
    -&amp;gt;   FROM employee&lt;br /&gt;
    -&amp;gt;  WHERE myFunction(id)&amp;gt;0&lt;br /&gt;
    -&amp;gt;  ORDER BY myFunction(id) desc;&lt;br /&gt;
+------+----------------+&lt;br /&gt;
| id   | myFunction(id) |&lt;br /&gt;
+------+----------------+&lt;br /&gt;
|    1 |              1 |&lt;br /&gt;
|    2 |              1 |&lt;br /&gt;
|    3 |              1 |&lt;br /&gt;
|    4 |              1 |&lt;br /&gt;
|    5 |              1 |&lt;br /&gt;
|    6 |              1 |&lt;br /&gt;
|    7 |              1 |&lt;br /&gt;
|    8 |              1 |&lt;br /&gt;
+------+----------------+&lt;br /&gt;
8 rows in set (0.01 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; drop function myFunction;&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; drop table Employee;&lt;br /&gt;
Query OK, 0 rows affected (0.02 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using user-defined function in a select statement==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
mysql&amp;gt; delimiter $$&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; CREATE FUNCTION myFunction(&lt;br /&gt;
    -&amp;gt;         in_title          VARCHAR(4),&lt;br /&gt;
    -&amp;gt;         in_gender         CHAR(1),&lt;br /&gt;
    -&amp;gt;         in_firstname      VARCHAR(20),&lt;br /&gt;
    -&amp;gt;         in_middle_initial CHAR(1),&lt;br /&gt;
    -&amp;gt;         in_surname        VARCHAR(20))&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt;   RETURNS VARCHAR(60)&lt;br /&gt;
    -&amp;gt; BEGIN&lt;br /&gt;
    -&amp;gt;   DECLARE l_title               VARCHAR(4);&lt;br /&gt;
    -&amp;gt;   DECLARE l_name_string         VARCHAR(60);&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt;   IF ISNULL(in_title)  THEN&lt;br /&gt;
    -&amp;gt;      IF in_gender=&amp;quot;M&amp;quot; THEN&lt;br /&gt;
    -&amp;gt;         SET l_title=&amp;quot;Mr&amp;quot;;&lt;br /&gt;
    -&amp;gt;      ELSE&lt;br /&gt;
    -&amp;gt;         SET l_title=&amp;quot;Ms&amp;quot;;&lt;br /&gt;
    -&amp;gt;      END IF;&lt;br /&gt;
    -&amp;gt;   END IF;&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt;   IF ISNULL(in_middle_initial) THEN&lt;br /&gt;
    -&amp;gt;      SET l_name_string=l_title||&amp;quot; &amp;quot;||in_firstname||&amp;quot; &amp;quot;||in_surname;&lt;br /&gt;
    -&amp;gt;   ELSE&lt;br /&gt;
    -&amp;gt;      SET l_name_string=l_title||&amp;quot; &amp;quot;||in_firstname||&amp;quot; &amp;quot;||&lt;br /&gt;
    -&amp;gt;                           in_middle_initial||&amp;quot; &amp;quot;||in_surname;&lt;br /&gt;
    -&amp;gt;   END IF;&lt;br /&gt;
    -&amp;gt;&lt;br /&gt;
    -&amp;gt;   RETURN(l_name_string);&lt;br /&gt;
    -&amp;gt; END$$&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; delimiter ;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; select myFunction(&amp;quot;Mrs&amp;quot;,&amp;quot;M&amp;quot;,&amp;quot;First&amp;quot;,&amp;quot;Middle&amp;quot;,&amp;quot;Last&amp;quot;);&lt;br /&gt;
+-----------------------------------------------+&lt;br /&gt;
| myFunction(&amp;quot;Mrs&amp;quot;,&amp;quot;M&amp;quot;,&amp;quot;First&amp;quot;,&amp;quot;Middle&amp;quot;,&amp;quot;Last&amp;quot;) |&lt;br /&gt;
+-----------------------------------------------+&lt;br /&gt;
| NULL                                          |&lt;br /&gt;
+-----------------------------------------------+&lt;br /&gt;
1 row in set, 2 warnings (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; select myFunction(null,&amp;quot;M&amp;quot;,&amp;quot;First&amp;quot;,&amp;quot;Middle&amp;quot;,&amp;quot;Last&amp;quot;);&lt;br /&gt;
+----------------------------------------------+&lt;br /&gt;
| myFunction(null,&amp;quot;M&amp;quot;,&amp;quot;First&amp;quot;,&amp;quot;Middle&amp;quot;,&amp;quot;Last&amp;quot;) |&lt;br /&gt;
+----------------------------------------------+&lt;br /&gt;
| 0                                            |&lt;br /&gt;
+----------------------------------------------+&lt;br /&gt;
1 row in set, 2 warnings (0.02 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt; drop function myFunction;&lt;br /&gt;
Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>