我是一名学生,我想让我的函数返回我选择的结果,但是我不知道要在RETURN
中输入什么。
例如,我尝试使用数学运算来创建函数,并且它可以正常运行:
DELIMITER $$
CREATE FUNCTION `getScore`(`a` INT, `b` INT, `c` INT) RETURNS INT
BEGIN
RETURN a + b + c;
END$$
DELIMITER ;
SELECT getScore(0.3, 0.4, 0.5);
但是我的问题出在此函数中,我不知道要放在RETURN
中或如何检查该函数:
DELIMITER $$
CREATE FUNCTION `getCharacters`() RETURN
BEGIN
SELECT *
FROM `characters`
WHERE `level` > 50
END$$
DELIMITER ;
SELECT getCharacters();
下一个错误:
A "RETURNS" keyword was expected. (near "RETURN" at position 34)
谢谢您的帮助,请原谅我的英语。
答案 0 :(得分:1)
MySQL存储函数仅返回单个标量值。他们无法返回结果集。函数可以在标量表达式上下文中使用。
您可以使用存储过程返回结果集,但不能在表达式中使用它。您只能使用CALL运行过程。
答案 1 :(得分:0)
MySQL函数只能返回一个值。您可以改用存储过程:
DELIMITER $$
CREATE PROCEDURE `getCharacters`()
BEGIN
SELECT *
FROM `characters`
WHERE `level` > 50;
END $$
DELIMITER ;
CALL getCharacters;
有关存储过程和函数之间差异的更多信息,请参见:MySQL stored procedure vs function, which would I use when?