Mysql 生成简单的存储函数

Mysql Generate simple stored function

我已经努力了大约一个小时,试图让一个简单的存储函数在 mysql 中工作。我做了下面的简单示例,但我不确定它有什么问题。

CREATE FUNCTION hello(id INT) 
RETURNS VARCHAR
BEGIN
    RETURN 'Works';
END;

hello(2);

我收到以下错误:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEGIN RETURN 'Works'; END' at line 3

我很确定这是一个 "dumb" 问题,但我根本不是 sql 人,迫切需要将一组函数放在一起来构建自定义报告

VARCHAR 不是有效的数据类型:您需要给它一个长度,例如 VARCHAR(5):

DELIMITER //
CREATE FUNCTION hello(id INT) RETURNS VARCHAR(5)
BEGIN
    RETURN 'Works';
END;
//

另请注意,您现有的函数可以简化如下:

CREATE FUNCTION hello(id INT) RETURNS VARCHAR(5)
    RETURN 'Works';

当函数包含 复合语句,如声明、循环等时,BEGIN 关键字就会发挥作用。此外,正如 Raymond Nijland 所评论的那样,没有必要指定 DELIMITER 因为函数中只有一条语句。

参考:MySQL CREATE PROCEDURE and CREATE FUNCTION Syntax