Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы Данных Теор. Экзамен.doc
Скачиваний:
73
Добавлен:
20.05.2015
Размер:
1.93 Mб
Скачать

Тема 8. Встроенный sql. Понятие курсора

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

  2. Зачем требуется обращаться к базе мета-данных при трансляции SQL-операторов? А как иначе мы можем проверить правильность введённых имён отношений и так далее?

  3. В чем смысл плана выполнения запроса, может ли этот план изменяться? Изменяться может, некоторые приложения СУБД позволяют выполнить часть плана заранее, можно грохнуть оптимизацию, но это нежелательно из-за возрастания обработки неоптимизированного запроса.

  4. Что происходит при выполнении оператора описания курсора? определяет выполняемый запрос, задает имя курсора и связывает результаты запроса с заданным курсором.

  5. Каков формат операторов описания курсора и оператора открытия курсора? Чем отличается функции оператора открытия курсора от оператора описания курсора? DECLARE не является исполняемым, в отличие от OPEN. DECLARE описывает связь и структуру БД с курсором, когда как OPEN устанавливает указатель записей (курсор) перед первой строкой виртуального набора строк результата.

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

  7. Что такое чувствительный курсор, каковы операторы описания данного курсора? Если при выполнении запроса не будет получено ни одной строки, как поведет себя курсор? курсоры "видят" все изменения, выполненные другими курсорами. Операторы те же.

  8. Что дает установка свойства нечувствительности курсора, ускоряется или замедляется при этом выполнение соответствующего запроса и почему? Параметр INSENSITIVE (нечувствительный) определяет режим создания набора строк, соответствующего определяемому курсору, при котором все изменения в исходных таблицах, произведенные после открытия курсора другими пользователями, не видны в нем. Такой набор данных нечувствителен ко всем изменениям, которые могут проводиться другими пользователями в исходных таблицах, этот тип курсора соответствует некоторому мгновенному слепку с БД. 

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

  1. Вы разрабатываете приложение, которое подсчитывает начисление процентов по вкладам клиентов банка, какой курсор Вы будете использовать и почему? Нечувствительный, нам важно показать не сам процесс начисления, а слепок на определённый момент времени.