Курсори в mysql

Курсори прекрасно підтримуються в збережених процедурах, функціях і тригерах.
Синтаксис такий же, як і у упровадженому SQL. Курсори поки тільки для читання, односпрямовані (тобто по набору можна ходити тільки вперед без можливості повернутися) та несприйнятливі. Несприйнятливість означає, що сервер може створювати копію результатірующего таблиці, а може і не створювати, формуючи її на льоту.

Цей вислів оголошує курсор c ім'ям cursor_name. select_statement вказує на конструкцію типу SELECT. FROM. Можна оголосити багато курсорів в підпрограмі, але кожен курсор в даному блоці повинен мати унікальне ім'я. Вираз SELECT не повинно містити вказівку INTO.

відкривання курсорів

Вираз відкриває раніше оголошений курсор

Вибірка з курсору в змінну

закриття курсору

Закриває курсор cursor_name. Якщо явно не вказано, то курсор закривається автоматично при закритті відповідного блоку підпрограми.

Як використовувати курсори

Застосування курсора в процедурах здійснюється шляхом послідовного виконання наступних кроків:

приклади курсорів

Наведу ще один приклад курсора. Курсор призначений для вибірки даних (ідентифікаторів записів) в рядок з роздільником у вигляді коми по переданим параметрам. Курсор знаходиться всередині збереженої функції get_pedplan (). У неї передається три параметра: lip-номер лабораторії, ti-номер пари і dt - дата проведення заняття.

Курсор визначено на рядку 14. Відкритий на 16 сходинці. З 19-ї розпочато прохід по вибірці отриманої курсором. На кожному кроці циклу відбувається зчитування запису (21-я). Потім, якщо не досягнуть кінець вибірки (22-я), виконується перевірка прапора на перший запис (23-я). Якщо запис перша, то присвоюємо retv поточне значення вибірки (26-я) і встановлюємо прапор (27-я), інакше об'єднуємо значення retv з поточним значенням вибірки (рядок 24). Після проходу по курсору закриваємо його (31-я) і повертаємо значення (32-й рядок).

Схожі статті