语法:
CREATE FUNCTION function_name(params)
Limitations of functions
标准示例:
CREATE FUNCTION factorial (n DECIMAL(3,0))
RETURNS DECIMAL(20,0)
DETERMINISTIC
BEGIN
DECLARE factorial DECIMAL(20,0) DEFAULT 1;
DECLARE counter DECIMAL(3,0);
SET counter = n;
factorial_loop: REPEAT
SET factorial = factorial * counter;
SET counter = counter - 1;
UNTIL counter = 1
END REPEAT;
RETURN factorial;
END //
简单示例:
mysql> create function f5(n int)
-> returns int deterministic
-> begin
-> return n;
-> end;//
Query OK, 0 rows affected (0.00 sec)
mysql> f5(4);
-> //
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL s
for the right syntax to use near 'f5(4)' at line 1
mysql> select f5(4);//
+-------+
| f5(4) |
+-------+
| 4 |
+-------+
1 row in set (0.00 sec)
mysql>
函数跟过程很相似,唯一需要指出的是语法上的不同就是创建函数后必须有return语句返回函数指定的类型值。还有一点需要注意的是在函数中是不能访问表的。
CREATE FUNCTION function_name(params)
Limitations of functions
标准示例:
CREATE FUNCTION factorial (n DECIMAL(3,0))
RETURNS DECIMAL(20,0)
DETERMINISTIC
BEGIN
DECLARE factorial DECIMAL(20,0) DEFAULT 1;
DECLARE counter DECIMAL(3,0);
SET counter = n;
factorial_loop: REPEAT
SET factorial = factorial * counter;
SET counter = counter - 1;
UNTIL counter = 1
END REPEAT;
RETURN factorial;
END //
简单示例:
mysql> create function f5(n int)
-> returns int deterministic
-> begin
-> return n;
-> end;//
Query OK, 0 rows affected (0.00 sec)
mysql> f5(4);
-> //
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL s
for the right syntax to use near 'f5(4)' at line 1
mysql> select f5(4);//
+-------+
| f5(4) |
+-------+
| 4 |
+-------+
1 row in set (0.00 sec)
mysql>
函数跟过程很相似,唯一需要指出的是语法上的不同就是创建函数后必须有return语句返回函数指定的类型值。还有一点需要注意的是在函数中是不能访问表的。