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 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
因为函数中只有一条语句。