Популярные услуги

Все письменные КМ под ключ за 7 суток! (КМ-1 + КМ-2 + КМ-3 + КМ-4 + КМ-5)
КМ-6. Динамические массивы. Семинар - выполню любой вариант!
КМ-2. Разработка простейших консольных программ с использованием ООП + КМ-4. Более сложные элементы ООП - под ключ!
Оба семинара по программированию под ключ! КМ-2. Разработка циклических алгоритмов + КМ-3. Функции и многофайловые программы в Си
Одно любое задание в mYsql
Сделаю ваше задание: Лабораторная работа на Pascal / Lazarus
Любая задача на C/C++
Любой тест по базам данных максимально быстро на хорошую оценку - или верну деньги!
Любой реферат по объектно-ориентированному программированию (ООП)
Повышение уникальности твоей работе

Использование курсоров

2021-03-09СтудИзба

21. Использование курсоров

21.1.  Что такое курсоры

Операции выборки SQL работают с наборами строк, которые называются результирующими множествами.

Иногда бывает необходимо просмотреть строки в прямом или обратном направлении один или несколько раз. Именно для этого используются курсоры.

Курсор представляет собой запрос к базе данных, хранящийся на сервере СУБД, = это не оператор SEECT, но результирующее множество, выборка, полученная в результате действия оператора SELECT. После того как курсор сохранен, приложение может просматривать данные в прямом или обратном направлении.

Различные СУБД поддерживают разные опции и возможности курсоров. Наиболее часто обеспечиваются следующие возможности.

· Возможность помечать курсор как предназначенный только для чтения, в результате чего данные могут считываться, но не могут обновляться или удаляться.

· Возможность управлять направлением выполняемых операций (вперед, назад, первая, последняя, абсолютное положение, относительное положение и т.д.).

· Возможность помечать некоторые столбцы как редактируемые, а другие – как нередактируемые.

Рекомендуемые материалы

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

· Указание СУБД скопировать выбранные данные, чтобы они не изменялись в промежуток времени между открытием курсора и обращением к нему.

Курсоры как часть спецификации SQL интересны тем, что с их помощью можно заставить реляционную базу данных вести себя подобно базе данных типа ISAM (Indexed Sequential Access Method) индексно-последовательный метод доступа.

Курсоры используются главным образом интерактивными приложениями, представляющими пользователям возможность просматривать отображаемые на экране данные вперед и назад.

Курсоры практически бесполезны, если их применять к приложениям, основанным на Web-технологиях, например, таких как ASP, PHP. Курсоры предназначены идля использования в течение сеанса связи между клиентским приложением и серверном, но эта модель «клиент-сервер» не годится для Web-приложений, потому что сервер приложений является клиентом базы данных, а не конечным пользователем. А раз так, то большинство разработчиков приложений избегают использование курсоров и добиваются выполнения нужных функций, если это необходимо, другими возможностями.

21.2.  Работа с курсорами

Работа с курсорами содержит.

· Прежде чем курсор может быть использован, его необходимо объявить. В ходе этого процесса выборка данных не производится, просто определяется оператор SELECT, который будет использован, и некоторые опции курсора.

· После объявления курсор может быть открыт для использования. В ходе этого процесса уже производится выборка данных согласно предварительно определенному оператору SELECT.

· После того как курсор заполнен данными, могут быть извлечены отдельные необходимые строки.

· После того как это сделано, курсор должен быть закрыт и, возможно, должны быть освобождены ресурсы, которые он занимал.

После того как курсор объявлен, его можно открывать, закрывать сколько необходимо. Если курсор открыт, операция выборки может выполняться сколько необходимо раз.

21.3.  Создание курсоров

Курсоры создаются с помощью оператора DECLARE, синтаксис которого различен для разных СУБД. Оператор DECLARE дает курсору имя и принимает оператор SELECT дополненный при необходимости предложением WHERE и другими.

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

Для SQL Server

DECLARE CustCursor CURSOR

FOR

SELECT * FROM Customers

WHERE cust_email IS NULL

Для Oracle

DECLARE CustCursor CURSOR

IS

SELECT * FROM Customers

WHERE cust_email IS NULL

Для определения имени курсора используется оператор DECLARE. После того как курсор определен, его можно открыть.

21.4.  Использование курсоров

Курсоры открываются с помощью оператора OPEN CURSOR, в котором указывается имя открываемого курсора.

При обработке оператора выполняется запрос к базе данных. Выборка данных сохраняется для последующих просмотров и прокрутки.

Доступ к данным этого курсора может быть получен с помощью оператора FETCH. Оператор FETCH указывает строки, которые должны быть выбраны, откуда они должны быть выбраны и где их следует сохранить.

Для Oracle

DECLARE TYPE custCursor IS REF CURSOR

       RETURN CustomERS%ROWTYPE;

DECLARE CustRecord Customers%ROWTYPE

BEGIN

    OPEN CustCursor;

FETCH CustCursor INTO CustRecord;

    CLOSE CustCursor;

END;

В данном примере оператор FETCH используется для выборки текущей строки. Автоматически он начинает с первой строки, в переменную, объявленную с именем CustRecord, С выбранными данными ничего не делается.

В следующем примере выбранные данные подвергаются циклической обработке от первой строки до последней.

DECLARE TYPE custCursor IS REF CURSOR

       RETURN CustomERS%ROWTYPE;

DECLARE CustRecord Customers%ROWTYPE

BEGIN

    OPEN CustCursor;

    LOOP

    FETCH CustCursor INTO CustRecord;

    EXIT WHEN CustCursor%NOTFOUND

    . . .

    CLOSE CustCursor;

END;

Здесь также используется оператор FETCH для выборки текущей строки в переменную, объявленную с именем CustRecord. Однако в отличие от предыдущего примера, здесь оператор FETCH находится внутри цикла LOOP, так что он выполняется снова и снова. Код EXIT WHEN CustCursor%NOTFOUND указывает, что этот процесс должен быть завершен, когда больше не останется строк для выборки.  

21.5.  Закрытие курсоров

В лекции "19. Истечение жидкости через отверстия" также много полезной информации.

После использования курсоров их нужно закрывать. В некоторых СУБД, например SQL Server, требуется, чтобы ресурсы, занятые курсором, были освобождены явным образом. Для закрытия курсора используется оператор CLOSE. После того как курсор закрыт, его нельзя использовать, не открыв перед этим вновь

Для Oracle

CLOSE CustCursor

Для SQL Server

CLOSE CustCursor

DEALLOCATE CURSOR CustCursor

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5120
Авторов
на СтудИзбе
445
Средний доход
с одного платного файла
Обучение Подробнее