Oracle - жизненный цикл курсора
вступление
Хорошее знание жизненного цикла и работы курсоров позволит вам оптимизировать приложения, выполняющие запросы SQL.
Обратите внимание : «Курсор - это процедура, позволяющая назначить имя« инструкции SELECT »и изменить информацию в инструкции SQL»
Начиная
Шаги при выполнении курсора:
- Открытие курсора: память выделяется для курсора в личной памяти серверного процесса (на стороне сервера), связанного с сеансом (глобальная область пользователя UGA). Обратите внимание, что ни один запрос SQL не связан с курсором на данный момент
- Путь курсора: с ним связан SQL-запрос. Представление маршрута запроса, включая план его реализации, который описывает, как механизм SQL выполняет оператор SQL, загружается в общий пул в кеше библиотеки . Структура в UGA обновляется для хранения указателя на область, связанную с курсором, в библиотечном кеше.
- Определение выходных переменных: запрос SQL возвращает данные, поэтому необходимо определить переменные, связанные с ними. Это определение также требуется для запросов DELETE, INSERT и UPDATE (с использованием предложения RETURNING).
- Связывание входных переменных: если в запросе SQL используются переменные, они должны быть предоставлены. Проверка по ссылке не производится. Если переданы неверные значения, будет вызвана ошибка времени выполнения.
- Выполнение курсора: на этом этапе выполняется SQL. В зависимости от механизма базы данных этап фактической реализации может быть отложен во время выборки.
- Выборочный курсор (восстановление содержимого): если запрос SQL возвращает результат, он восстанавливается. Как правило, именно на этом этапе происходит лечение.
- Закрытие курсора : курсор, связанный с ресурсами в UGA, автоматически освобождается. Курсор в кеше библиотеки не удаляется в ответ на возможное использование в будущем.