Я пытаюсь создать хранимую процедуру в MYSQL (v5.7.21) с помощью phpmyadmin (v4.7.9), которая иногда возвращает пустой набор результатов.
CREATE DEFINER=`my_database`@`%` PROCEDURE `emptytest`(IN `_id` INT(11))
NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
select * from my_table where id=_id
и затем вызовите его с помощью:
call emptytest(1);
это прекрасно работает, когда идентификатор существует в таблице:
id name
--------
1 bob
, но выдает ошибку, когда естьнет строк для возврата:
call emptytest(11);
#2014 - Commands out of sync; you can't run this command now
Однако я ожидаю, что он вернет то же самое, что и выполнение оператора SQL:
select * from my_table where id=11
Что представляет собой пустой список:
id name
--------
Я искал в StackOverflow похожие вопросы, но большинство из них решают проблемы с несколькими запросами, что не в моем случае.
НасколькоЯ знаю, что документация MySQL гласит, что процедуры должны иметь возможность возвращать таблицы.
Для примера я показываю параметры по умолчанию, используемые phpmyadmin, но я попытался настроить их безрезультатно.
Чего мне не хватает?