Курсоры в MySQL

mysql

MySQL позволяет использовать курсоры (CURSORs) в хранимых процедурах. Эта конструкция позволяет организовать сложную обработку данных на стороне сервера привычным программисту способом, а именно — строка за строкой. Обработка данных на стороне MySQL может сократить время обработки данных, т.к. не нужно передавать данные из базы в программу и наоборот, как это часто происходит при работе с базой из PHP скрипта на веб-сервере.

Дальше мы разберем как объявить и работать с курсорами.

При работе с курсорами надо помнить, что они :

  • нечувствительны к изменениям в базе; то есть после выполнения запроса, данные там статичны;
  • работают только на чтение (readonly);
  • просматривают результаты только в одном направлении и не могут «перескакивать» через строки.

Фазы жизни курсора

Курсоры объявляются в начале хранимой процедуры до выполнения каких либо операций.

Перед выборкой строк из курсора его нужно инициализировать (выполняется запрос)

Далее вы можете выбирать данные из курсора, строка за строкой.

Завершается работа с курсором вот так:

Признак отсутствия данных в курсоре

В показанном примере выше, мы вообще то не знаем, вернул ли запрос в курсоре хотя бы одну строку. И выполняем операцию FETCH только для одной строки запроса, хотя их может быть больше. Нам нужен сигнал об окончании данных в курсоре. В MySQL для этого используют обработку исключительных ситуаций — конструкцию

В нашем случае нужно продолжить исполнение (CONTINUE) при возникновении ситуации «нет данных» (NOT FOUND).

Думаю, этой информации достаточно, чтобы начать использовать курсоры. Есть вопросы — пишите :)

Написать комментарий

Мало букафф? Читайте есчо !

Считаем полное число строк в запросе MySQL, ограниченного LIMIT

Ноябрь 2, 2012 г.

О полезном операторе - SQL_CALC_FOUND_ROWS. Это конструкция просто незаменима для организации постраничного вывода каких либо данных. Все время забываю синтаксис, приходится каждый раз искать. Решил записать в блоге, чтобы уж не терять :). Во всех ...

Читать

Группировка строковых значений в выборке из базы данных

Сентябрь 30, 2018 г.

Группировка по полю, содержащему число, используется значительно чаще, чем группировка по текстовому полю. Я думаю, вы использовали функции вроде AVG(), ...

Читать

 

Комментарии к «Курсоры в MySQL»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: