如何在MySQL函数中返回选择结果?

时间:2019-01-09 21:13:13

标签: mysql sql phpmyadmin

我是一名学生,我想让我的函数返回我选择的结果,但是我不知道要在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)

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

2 个答案:

答案 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?