Как я могу вернуть результат выбора в функции в MySQL? - PullRequest
0 голосов
/ 10 января 2019

Я студент, и я пытаюсь заставить свою функцию возвращать результат моего выбора, но я не знаю, что вставить в 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 голосов
/ 10 января 2019

Функция MySQL может возвращать только одно значение. Вместо этого вы можете использовать хранимую процедуру:

DELIMITER $$

CREATE PROCEDURE `getCharacters`() 
BEGIN

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

END $$

DELIMITER ;

CALL getCharacters;

Более подробную информацию о разнице между хранимыми процедурами и функциями можно найти здесь: Хранимая процедура MySQL против функции, которую я буду использовать, когда?

0 голосов
/ 10 января 2019

MySQL хранимые функции возвращают только одно скалярное значение. Они не могут возвращать наборы результатов. Функции могут использоваться в контексте скалярного выражения.

Вы можете использовать хранимую процедуру для возврата набора результатов, но вы не можете использовать ее в выражении. Вы можете запустить процедуру только с CALL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...