Программирование в Microsoft SQL Server 2000

         

Мониторинг курсоров Transact-SQL


Transact-SQL предоставляет две глобальные переменные и функцию, которые помогают вам контролировать работу и состояние вашего курсора. Переменная @@CURSOR_ROWS возвращает количество строк во множестве последнего курсора, открытого в соединении. Значения, возвращаемые @@CURSOR_ROWS, представлены в таблице 27.1.

Таблица 27.1. Значения, возвращаемые переменной @@CURSOR_ROWS.

Возвращаемое значениеОписание
-mКурсор заполнен записями не полностью; множество курсора на данный момент содержит m строк.
-1Курсор является динамическим, и количество строк может варьироваться.
0Курсор либо не открыт, а последний открытый курсор был закрыт и освобожден, либо курсор содержит нуль строк.
nКоличество строк в курсоре равно n.

Переменная @@FETCH_STATUS возвращает информацию о выполнении последней команды FETCH. В таблице 27.2 представлены значения, возвращаемые переменной @@FETCH_STATUS.

Таблица 27.2. Значения, возвращаемые переменной @@FETCH_STATUS.

Возвращаемое значениеОписание
0Оператор FETCH был выполнен успешно.
-1Оператор FETCH был выполнен неудачно.
-2Извлекаемая строка отсутствует.

Наконец, Transact-SQL предоставляет функцию CURSOR_STATUS. Эта функция имеет следующий синтаксис:

CURSOR_STATUS(тип, курсор_или_переменная)

Тип может иметь значения 'local', 'global' или 'variable', а курсор_или_переменная – это идентификатор курсора или курсорной переменной, информацию о котором требуется получить. Результаты, возвращаемые функцией CURSOR_STATUS, представлены в таблице 27.3.

Таблица 27.3. Значения, возвращаемые функцией CURSOR_STATUS.

Возвращаемое значениеОписание
1Если функция вызывалась для динамического курсора, множество курсора состоит из нуля, одной или нескольких строк. Если функция вызывалась для другого типа курсора, курсор состоит по меньшей мере из одной строки.
0Множество курсора пусто.
-1Курсор закрыт.
-2Возвращается только для курсорной переменной. Либо курсор, назначенный указанной переменной, закрыт, либо переменной не назначен какой-либо курсор.
-3Указанный курсор или курсорная переменная не существует.


Используйте функции мониторинга курсором

  1. Нажмите кнопку Load Script (Загрузить сценарий)
    в панели инструмента анализатора запросов Query Analyzer. Query Analyzer отобразит диалоговое окно Open Query File (Открытие файла запроса).



  2. Выделите сценарий StatusFunctions и нажмите кнопку Open (Открыть). Query Analyzer загрузит сценарий в окно Query (Запрос).



  3. Нажмите кнопку Execute Query (Выполнить запрос)
    в панели инструментов анализатора запросов Query Analyzer. Query Analyzer выполнит запрос. Будет отображено четыре панели сетки. Первая создается оператором SELECT @@CURSOR_ROWS, а вторая – оператором FETCH. Третья панель сетки является результатом выполнения оператора SELECT @@FETCH_STATUS, а четвертая – результатом выполнения оператора SELECT CURSOR_STATUS('local', 'simpleCursor').






Содержание раздела