Что такое прокручиваемый курсор PDO? - PullRequest
19 голосов
/ 20 июля 2009

Что такое «выборка строк с помощью прокручиваемого курсора»?

Ответы [ 3 ]

15 голосов
/ 20 июля 2009

Создает курсор для запроса, который позволяет перебирать набор результатов, не извлекая сразу весь результат. прокручиваемый курсор , в частности, это тот, который позволяет выполнять итерацию в обратном направлении.

Пример использования: вы можете прокручивать вперед до тех пор, пока не найдете нужную запись, и выполнить итерацию назад, чтобы получить предыдущие записи, если они вам тоже нужны.

8 голосов
/ 20 июля 2009

Википедия дает это:

С не прокручиваемым курсором, также известный как только вперед, можно получить каждая строка не более одного раза, и курсор автоматически переходит к следующий ряд Операция получения после последний ряд был найден позиционирует курсор после последнего строка и возвращает SQLSTATE 02000 (SQLCODE +100).

А это:

Программа может позиционировать прокручиваемый курсор в любом месте набора результатов используя инструкцию FETCH SQL.

Вы должны прочитать статью, на которую ссылались ранее, но это также выглядит как некоторая интересная информация:

Прокручиваемые курсоры могут потенциально получить доступ к той же строке в наборе результатов многократно. Таким образом, данные модификации (вставить, обновить, удалить операции) от других транзакций может повлиять на результат установлен.

В PHP вы можете использовать прокручиваемые курсоры с PDO, используя подготовленные операторы (см. PDOStatement::fetch):

Чтобы запросить прокручиваемый курсор для ваш объект PDOStatement, вы должны установить атрибут PDO :: ATTR_CURSOR для PDO :: CURSOR_SCROLL, когда вы готовитесь оператор SQL с PDO :: prepare ().

(ниже также есть пример)

Что кажется интересным, так это возможность «прокручивать» набор результатов без необходимости перебирать все данные в памяти для его перебора.

2 голосов
/ 29 сентября 2013

Для Mysql ... не поддерживается = не доступно (ни mysql (i), ни PDO):

mysqli_result :: data_seek (), обратите внимание, что руководство гласит: «Эта функция может использоваться только с буферизованными результатами, полученными при использовании функций mysqli_store_result () или mysqli_query ()». То есть поиск выполняется по локальной кэшированной копии набора результатов, а не на сервере. Таким образом, он не поддерживает никаких подсказок о «прокручиваемом курсоре».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...