@@FETCH_STATUS (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Эта функция возвращает состояние последней инструкции FETCH, вызванной в любом курсоре, открытом в рамках этого подключения.
Соглашения о синтаксисе Transact-SQL
Синтаксис
@@FETCH_STATUS
Тип возвращаемых данных
integer
Возвращаемое значение
Возвращаемое значение | Description |
---|---|
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 AdventureWorks2022.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