Курсоры в MySQL

mysql

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Развертывание бекапов mySQL из консоли unix

Февраль 6, 2018 г.

Как развернуть дамп базы данных mySQL, созданный ранее? Дамп представляет из себя mysql скрипт, в котором последовательно создаются таблицы (CREATE TABLE ...) и, возможно, другие объекты и производиться их наполнение (INSERT INTO ...). Нужно лишь отправить ...

Читать

Как выполнить mysql запрос из командной строки

Январь 19, 2023 г.

Допустим, у вас запущен локально сервер, и есть база myBase с и учетка пользователя UserName/MyPass. Вы хотите выполнить запрос "SELECT * FROM TABLE" из командной строки. Команда передаётся с параметром -e, в общем виде запрос будет выглядеть так: ...

Читать

 

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

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



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