@@FETCH_STATUS (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии) ДаБаза данных SQL Azure ДаУправляемый экземпляр SQL Azure

Эта функция возвращает состояние последней инструкции FETCH, вызванной в любом курсоре, открытом в рамках этого подключения.

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

Синтаксис

@@FETCH_STATUS  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

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

integer

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

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

Комментарии

Глобальный статус @@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 AdventureWorks2012.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  

См. также

Функции работы с курсорами (Transact-SQL)
FETCH (Transact-SQL)