Ваша процедура должна выполнить SELECT с последующим не-SELECT.
Вот демонстрационный пример:
mysql> delimiter ;;
mysql> create procedure p() begin select 123; do 123+456; end;;
mysql> delimiter ;
mysql> call p;
+-----+
| 123 |
+-----+
| 123 |
+-----+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Два указанных отчета относятся к двум операторам SQL, выполняемым в процедуре.
- Первый оператор вернул строку.
- Второй оператор не возвратил строку, но все же должен был быть выполнен, поэтому он сообщил о своем времени.
Операторы, в которых есть набор результатов, включают SELECT и SHOW.
Все остальные операторы не имеют результирующего набора, но могут влиять на строк.Например, если UPDATE изменит строки, он сообщит, что затронул некоторое количество строк, то есть строк, которые он изменил.
В быстром примере, который я показал в моей демонстрации, используется только оператор DO
, который оценивает выражениено не меняет никаких данных и не возвращает никаких данных.