Transact-SQL предоставляет две глобальные переменные и функцию, которые помогают вам контролировать работу и состояние вашего курсора. Переменная @@CURSOR_ROWS возвращает количество строк во множестве последнего курсора, открытого в соединении. Значения, возвращаемые @@CURSOR_ROWS, представлены в таблице 27.1.
| -m | Курсор заполнен записями не полностью; множество курсора на данный момент содержит m строк. |
| -1 | Курсор является динамическим, и количество строк может варьироваться. |
| 0 | Курсор либо не открыт, а последний открытый курсор был закрыт и освобожден, либо курсор содержит нуль строк. |
| n | Количество строк в курсоре равно n. |
Переменная @@FETCH_STATUS возвращает информацию о выполнении последней команды FETCH. В таблице 27.2 представлены значения, возвращаемые переменной @@FETCH_STATUS.
| 0 | Оператор FETCH был выполнен успешно. |
| -1 | Оператор FETCH был выполнен неудачно. |
| -2 | Извлекаемая строка отсутствует. |
Наконец, Transact-SQL предоставляет функцию CURSOR_STATUS. Эта функция имеет следующий синтаксис:
CURSOR_STATUS(тип, курсор_или_переменная)
Тип может иметь значения 'local', 'global' или 'variable', а курсор_или_переменная – это идентификатор курсора или курсорной переменной, информацию о котором требуется получить. Результаты, возвращаемые функцией CURSOR_STATUS, представлены в таблице 27.3.
| 1 | Если функция вызывалась для динамического курсора, множество курсора состоит из нуля, одной или нескольких строк. Если функция вызывалась для другого типа курсора, курсор состоит по меньшей мере из одной строки. |
| 0 | Множество курсора пусто. |
| -1 | Курсор закрыт. |
| -2 | Возвращается только для курсорной переменной. Либо курсор, назначенный указанной переменной, закрыт, либо переменной не назначен какой-либо курсор. |
| -3 | Указанный курсор или курсорная переменная не существует. |




