Теория баз данных

и экономно может обрабатывать такой



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

Ключевое слово SCROLL определяет, что допустимы любые режимы перемещения по курсору (FIRST, LAST, PRIOR. NEXT, RELATIVE, ABSOLUTE) в операторе FETCH.

Если не указано ключевое слово SCROLL, то считается доступной только стандартное перемещение вперед: спецификация NEXT в операторе FETCH.

Если указана спецификация READ ONLY (только для чтения), то изменения и обновления исходных таблиц не будут выполняться с использованием данного курсора. Курсор с данной спецификацией может быть самым быстрым в обработке, однако если вы не укажите специально спецификацию READ ONLY, то СУБД будет считать, что вы допускаете операции модификации с базовыми таблицами, и в этом случае для обеспечения целостности БД СУБД будет гораздо медленнее обрабатывать ваши операции с. курсором.

При использовании параметра UPDATE [OF <имя столбца 1> [,...<имя столбца n>]] мы задаем перечень столбцов, в которых допустимы изменения в процессе нашей работы с курсором. Такое ограничение упростит и ускорит работу СУБД. Если этот параметр не указан, то предполагается, что допустимы изменения всех столбцов курсора.

Вернемся к нашему примеру. Если мы преследуем цель мгновенного слепка БД, дающего сведения о должниках, то применим все параметры, позволяющие ускорить работу с нашим курсором. Тогда оператор описания курсора будет выглядеть следующим образом:

DECLARE Debtor_reader_cursor INSENSITIVE CURSOR

FOR

SELECT READERS. FIRST_NAME. READERS. LAST_NAME. READERS.ADRES.

READERS.HOME_PHON. READERS.WORK_PHON, BOOKS.TITLE FROM

READERS,BOOKS.EXEMPLAR

WHERE READERS.READER_ID = EXEMPLAR.READER_ID AND

BOOKS.ISBN = EXEMPLARE.ISBN AND

EXEMPLAR.DATA_OUT > Getdate()

ORDER BY READERS. FIRST_NAME

FOR READ ONLY

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


Содержание  Назад  Вперед