Процедура 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;
...

0 ответов

Другие вопросы по тегам