Процедура MySQL возвращает NULL, когда аналогичный SQL-запрос дает результат
Когда я использую запрос:
SELECT game_id FROM games_players WHERE player_id = 1 LIMIT 1
Я получил результат:
game_id
-------
1
Но когда я запускаю ее как хранимую процедуру (конечно, на той же таблице):
CREATE FUNCTION `start_game` (player_id_1 INT(11) UNSIGNED)
RETURNS INT(11) UNSIGNED NOT DETERMINISTIC
BEGIN
SELECT game_id INTO @game_id_1 FROM games_players WHERE player_id = 1 LIMIT 1;
RETURN @game_id_1;
END
END
за:
SET @p0='1';
SELECT `start_game`(@p0) AS `start_game`;
Я получил:
start_game
----------
NULL
Почему процедура не возвращает 1
и дает мне NULL
вместо?
редактировать:
То же самое поведение для любого из следующего как тела моей процедуры (большинство этих попыток основано на комментариях):
order by
(это всегда хорошо, когда вы ограничиваете результат):
...
SELECT game_id INTO @game_id_1 FROM games_players WHERE player_id = 1 ORDER BY game_id LIMIT 1;
RETURN @game_id_1;
...
player_id_1
вместо жестко 1
(если даже жестко 1
не работает, то...)
...
SELECT game_id INTO @game_id_1 FROM games_players WHERE player_id = player_id_1 ORDER BY game_id LIMIT 1;
RETURN @game_id_1;
...
без ограничений! (Я знаю, что результат состоит из одного и только одного значения).
...
SELECT game_id INTO @game_id_1 FROM games_players WHERE player_id = 1;
RETURN @game_id_1;
...