Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД вопросы.doc
Скачиваний:
42
Добавлен:
26.03.2015
Размер:
424.96 Кб
Скачать
                  1. 21. Временные таблицы: локальные, глобальные, работа с временными таблицами.

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

Локальная временная таблица:

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

CREATE TABLE #testtable

(

id INT PRIMARY KEY

)

Глобальная временная таблица:

CREATE TABLE ##testtable

(

id INT PRIMARY KEY

)

                  1. 22. Курсоры: определение, общая схема работы, локальные/глобальные, динамические/статические, только для чтения, SCROLL, дополнительная навигация со SCROLL-курсорами, конструкция WHERE CURRENT OF, значение FETCH_STATUS.

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

Схема работы с курсором: DECLARE, OPEN, FETCH, CLOSE, DEALLOCATE. Объявить, открыть, просмотреть, закрыть, удалить.

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

Статический курсор: данные выбраны один раз и произошедшие изменения «не видны».

Локальный курсор живет в рамках одного пакета или одного скрипта.

Глобальный курсор живет в рамках одного соединения.

Read-only — курсор только для чтения.

Scroll – тип курсора, в котором мы можем двигаться в любом направлении. Работа со скролл курсорами:

  • last-позиция переходит на последнюю строку;

  • first-позиция переходит на первую строку;

  • absolute 5 – на 5 строку относительно начала;

  • absolute -5 – на 5 строку относительно конца;

  • relative 5 – на строку, от текущей +5 (вниз на 5);

  • relative -5 на строку, от текущей -5 (вверх на 5)

  • next- позиция переходит на следующую строку;

  • prior-позиция переходит на предыдущую строку.

Where current of cursor — изменение текущей строки, очень быстрая операция. работает быстрее обычного where.

@@CURSOR_ROWS — возвращает число выбранных строк, имеющихся в последнем открытом курсоре в данном соединении.

@@FETCH_STATUS – возвращает состояние последней инструкции FETCH курсора, запущенной в отношении любого курсора, который в настоящий момент открыт соединением.

Синтаксис:

DECLARE имя_курсора CURSOR FOR SELECT текст_запроса

Открытие курсора:

OPEN имя_курсора

Чтение следующей строки из курсора:

FETCH имя_курсора INTO список_переменных

Пример: FETCH my_cur FROM @CURSOR INTO @ID, @QUA, @VAL, @NAM