Что такое «Получение строк с помощью прокручиваемого курсора»?
Он создает курсор для запроса, который позволяет выполнять итерацию по набору результатов без получения всего результата сразу. Прокручиваемый курсор , в частности, – это тот, который позволяет выполнять повторное перемещение назад.
Пример использования: вы можете прокручивать вперед, пока не найдете нужную запись, и повторите выбор, чтобы получить предыдущие записи, если они вам тоже нужны.
Википедия дает следующее:
С помощью прокручиваемого курсора, также известного как только для пересылки, можно FETCH каждую строку не более одного раза, и курсор автоматически перемещается в сразу следующую строку. Операция выборки после того, как последняя строка была извлечена, позиционирует курсор после последней строки и возвращает SQLSTATE 02000 (SQLCODE +100).
И это :
Программа может позиционировать прокручиваемый курсор в любом месте набора результатов, используя оператор FETCH SQL.
Вы должны прочитать статью, связанную ранее, но это также выглядит как интересная информация:
Прокручиваемые курсоры могут несколько раз обращаться к одной и той же строке в результирующем наборе. Таким образом, изменения данных (операции вставки, обновления, удаления) из других транзакций могут повлиять на набор результатов.
В PHP вы можете использовать прокручиваемые курсоры с PDO с помощью подготовленных операторов (см. PDOStatement::fetch
):
Чтобы запросить прокручиваемый курсор для вашего объекта PDOStatement, вы должны установить атрибут PDO :: ATTR_CURSOR в PDO :: CURSOR_SCROLL при подготовке инструкции SQL с помощью PDO :: prepare ().
(есть еще пример ниже этой страницы)
Интересной представляется возможность «прокручивать» через набор результатов, не заставляя все данные в памяти перебирать их.
Для Mysql … не поддерживается = недоступно (ни mysql (i), ни PDO):
mysqli_result :: data_seek (), обратите внимание, что в руководстве указано: «Эта функция может использоваться только с буферизованными результатами, полученными с использованием функций mysqli_store_result () или mysqli_query ()». То есть поиск происходит на локальной кешированной копии набора результатов: не на сервере. Таким образом, он не поддерживает никаких предложений о «прокручиваемом курсоре».