русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Курсоры.


Дата добавления: 2015-07-09; просмотров: 1223; Нарушение авторских прав


Для выполнения команды SELECT система выделяет определенную область, куда помещает помимо служебной информации и сами выбранные строки (активный набор строк). В PL/SQL имеется специальная конструкция, которая позволяет задать имя этой области и осуществить доступ к хранящейся там информации. Такая конструкция называется курсором. Существуют курсоры двух типов: явные и неявные.

Явные курсоры. Явный курсор должен быть явно объявлен пользователем. Для его объявления используется следующий синтаксис:

CURSOR имя_курсора [(список_параметров)] IS SELECT…;

Оператор SELECT определяет набор извлекаемых строк. Список параметров может отсутствовать. Если же параметры используются, то они описываются следующим образом:

Имя_параметра тип [{:=ï DEFAULT} значение];

Если указано значение параметра, то при открытии курсора этот параметр можно не указывать.

Управление явным курсором осуществляется в двух вариантах: явно и неявно.

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

Явная форма управления курсорам. Для того чтобы явно открыть курсор, используется следующая конструкция:

OPEN имя_курсора [(список_параметров)];

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

FETCH имя_курсора INTO {имя_записи ï список_столбцов};



При выполнении оператора FETCH выбирается очередная строка, а указатель текущей записи передвигается на следующую строку в наборе строк. Если были выбраны все строки, то при попытке нового считывания ошибка не возникает, но и строка не выбирается.

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

CLOSE имя_курсора;

После закрытия курсора все попытки считывания информации приведут к ошибке. Для организации явного управления можно использовать курсорные атрибуты.

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

%ISOPEN – возвращающий значение TRUE, если курсор открыт, и FALSE, если курсор закрыт;

%FOUND – возвращающий значение TRUE, если строка найдена, и FALSE, если строка не найдена;

%NOTFOUND – возвращающий значение TRUE, если строка не найдена, и FALSE, если строка найдена;

%ROWCOUNT – возвращающий числовое значение, показывающее количество выбранных строк в курсоре;

Неявная форма управления курсором.Для автоматической обработки курсора используется специальная форма записи оператора цикл FOR – циклы FOR с курсором.

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

Неявные курсоры.Они создаются и открываются системой при выполнении операторов INSERT, UPDATE и DELETE, а также при выполнении однострочного оператора SELECT. Неявный курсор называется SQL-курсором. Он имеет свои атрибуты, аналогичные атрибутам явного курсора:

SQL%FOUND, SQL%NOTFOUND, SQL%ROWCOUNT

Однако в однострочном операторе SELECT нельзя использовать атрибут SQL%NOTFOUND, потому что, если при его выполнении информация из таблицы не будет выбрана, то сгенерируется исключение NO_DATA_FOUND. Атрибут SQL%NOTFOUND обычно используется в операторах UPDATE и DELETE для проверки, успешно или нет, выполнены соответствующие операторы.

Модификация данных в курсоре. Конструкция курсор позволяет помимо оперирования наборами данных таблиц выполнять и модификацию информации таблиц. Для этого используются две дополнительных конструкции:

FOR UPDATE [OF столбец1, столбец2…] [NOWAIT]

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

WHERE CURRENT OF имя_курсора

которая указывается в операторах UPDATE или DELETE, выполняемых в процессе выборки и обработки строк из активного набора.

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

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



<== предыдущая лекция | следующая лекция ==>
Операторы. | Обработка исключительных ситуаций.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.105 сек.