如何在mysql的函数中返回select的结果?

jjhzyzn0  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(1330)

我是一个学生,我正试图让我的函数返回select的结果,但我不知道在 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)

谢谢你的帮助,请原谅我的英语。

7cwmlq89

7cwmlq891#

mysql存储函数只返回一个标量值。它们不能返回结果集。函数可以在标量表达式上下文中使用。
可以使用存储过程返回结果集,但不能在表达式中使用它。只能使用call运行过程。

ffx8fchx

ffx8fchx2#

mysql函数只能返回一个值。您可以改用存储过程:

DELIMITER $$

CREATE PROCEDURE `getCharacters`() 
BEGIN

        SELECT * 
        FROM `characters` 
        WHERE `level` > 50;

END $$

DELIMITER ;

CALL getCharacters;

关于存储过程和函数之间区别的更多信息可以在这里找到:mysql存储过程vs函数,我什么时候会使用它?

相关问题