Хранимая процедура MySQL возвращает результаты только при первом запуске - PullRequest
0 голосов
/ 03 октября 2019

Изображение проблемы

Моя хранимая процедура будет успешно выполняться при первом ее вызове (через API или MySQL Workbench), но во второй или n-й раз после первого,Возвращено 0 строк.

Что вызывает такое поведение?

json_table?

Вот процедура:

CREATE DEFINER=`root`@`localhost` PROCEDURE `graphs_characters_rank_bar`()
BEGIN
select
    x.*
from
    players p
    ,json_table(p.character_ranks, "$[*]" columns(
        rowid for ordinality
        ,`character` varchar(255) path "$.character" default '0' on error default '0' on empty
        ,`rank` int(11) path "$.rank" default '0' on error default '0' on empty
        )
    ) x
where
    p.id = 1
order by
    x.`rank` desc;
END

таблица игроковвыглядит так

|id |name |character_ranks |

|1 |MyName |[{"rank": 930, "character": 12}] |

1 Ответ

0 голосов
/ 03 октября 2019

Кажется ошибкой, когда используется const тип соединения (используйте EXPLAIN).

Попробуйте изменить условие в операторе WHERE:

из

... p.id = 1 ...

до

... p.id > 0 ...

Другой вариант - использовать 13.5 Синтаксис подготовленного оператора SQL для выполнения запроса в хранимой процедуре.

Сообщенная ошибка: Ошибка # 97097 Хранимая процедура, JSON_TABLE и тип соединения "const" .

...