MySQL创建函数

示例

下面的(简单的)示例函数只返回常量 INT 值12。

DELIMITER ||
CREATE FUNCTION functionname()
RETURNS INT
BEGIN
    RETURN 12;
END;
||
DELIMITER ;

第一行定义了定界符(DELIMITER ||)的更改,需要在创建函数之前对其进行设置,否则,如果将其保留为默认值,则在函数体中找到;的第一;行将作为结尾的CREATE说法,需要什么这通常不是。

CREATE FUNCTION运行完后,应将定界符设置回其默认值,;如上述示例(DELIMITER ;)中的功能代码所示。

执行此功能如下:

SELECT functionname();
+----------------+
| functionname() |
+----------------+
|             12 |
+----------------+

稍微复杂一点(但仍然很琐碎)的示例采用一个参数并为其添加一个常量:

DELIMITER $$
CREATE FUNCTION add_2 ( my_arg INT )
  RETURNS INT
BEGIN
  RETURN (my_arg + 2);
END;
$$
DELIMITER ;

SELECT add_2(12);
+-----------+
| add_2(12) |
+-----------+
|        14 |
+-----------+

注意对DELIMITER指令使用了不同的参数。实际上,你可以使用未出现在任何字符序列CREATE声明的身体,但通常的做法是使用一倍非字母数字字符,例如\\,||或$$。

优良作法是始终在函数,过程或触发器创建或更新之前和之后更改参数,因为某些GUI不需要更改定界符,而通过命令行运行查询始终需要设置定界符。