Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИПК_Занятия_ОПБД / Lectures_16-17.pptx
Скачиваний:
14
Добавлен:
15.04.2015
Размер:
2.98 Mб
Скачать

3. Выборка из курсора и

изменение строк данных с помощью курсора.

После того, как в курсор занесены

данные, можно приступать к их

использованию. В зависимости от того,

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

только чтение, либо чтение и изменение данных.

31

Курсор перемещается к следующей строке и заполняет значениями ее столбцов локальные переменные (эти переменные должны быть

изначально объявлены):

32

По умолчанию команда FETCH перемещает курсор к следующей строке (направление NEXT).

Также можно переместить курсор:

к предыдущей (PRIOR), первой

(FIRST) и последней (LAST) строке;

строке с некоторым абсолютным номером (ABSOLUTE n);

сместить относительно текущей позиции на определенное расстояние

(RELATIVE n).

33

 

Смещение курсора относительно текущей позиции – проблема:

в реляционной БД номер строки не имеет определенного смысла.

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

34

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

Когда все операции обработки данных завершены и курсор уже не нужен, его необходимо закрыть. При этом сервер освобождает

пространство в системной БД temdb, выделенное курсору при его

открытии.

35

Закрытие курсора снимает

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

36

5. Освобождение курсора

Эта операция удаляет курсор как объект. При этом освобождается память, отведённая под курсор, и аннулируется его определение.

Последний оператор в наборе действий, связанных с использованием курсора, - DEALLOCATE, его общий синтаксис:

Особенность: оператор DEALLOCATE удаляет идентификатор или

курсорную переменную, но он

не обязательно удаляет сам курсор.

Сам курсор не удаляется до тех пор, пока все ссылающиеся на него идентификаторы будут освобождены

или перестанут действовать (при выходе за пределы области

действия).

38

Примеры использования курсоров

Пример 1.

После освобождения курсора

идентификатор myCursor больше не ассоциируется с множеством строк курсора, но поскольку на множество курсора еще ссылается переменная @cursorVariable, курсор и множество курсора не освобождаются.

Если явно не освободить также и курсорную переменную, то курсор и

множество курсора будут существовать, пока переменная не

утратит свое действие.

40

 

Соседние файлы в папке ИПК_Занятия_ОПБД