@@FETCH_STATUS (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

@@FETCH_STATUS

Тип возвращаемых данных

integer

Возвращаемое значение

Возвращаемое значение

Описание

0

Инструкция FETCH была выполнена успешно.

-1

Выполнение инструкции FETCH завершилось неудачно или строка оказалась вне пределов результирующего набора.

-2

Выбранная строка отсутствует.

Замечания

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

Например, пользователь выполняет инструкцию FETCH из одного курсора, а затем вызывает хранимую процедуру, которая открывает и обрабатывает результаты из другого курсора. Когда управление возвращается от вызванной хранимой процедуры, функция @@FETCH_STATUS отражает результаты последней инструкции FETCH, выполненной в хранимой процедуре, а не результаты инструкции FETCH, выполненной прежде, чем была вызвана хранимая процедура.

Чтобы получить состояние последней выборки конкретного курсора, запросите столбец fetch_status функции динамического управления sys.dm_exec_cursors.

Примеры

В следующем примере используется переменная @@FETCH_STATUS для управления действиями курсора в цикле WHILE.

DECLARE Employee_Cursor CURSOR FOR
SELECT BusinessEntityID, JobTitle
FROM AdventureWorks2008R2.HumanResources.Employee;
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM Employee_Cursor;
   END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO