Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Эта функция возвращает состояние последней инструкции 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