разница во времени выполнения процедуры в консоли MySQL - PullRequest
0 голосов
/ 21 февраля 2019

Когда я выполняю процедуру mysql на консоли, это всегда показывает два раза, но я не знаю, к какому времени относится каждая вещь.

enter image description here

Заранее спасибо!

1 Ответ

0 голосов
/ 22 февраля 2019

Ваша процедура должна выполнить 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, который оценивает выражениено не меняет никаких данных и не возвращает никаких данных.

...