@@FETCH_STATUS (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

此函数将返回最后一条游标 FETCH 语句的状态,该语句可以是针对连接当前打开的任何游标发出的。

Transact-SQL 语法约定

语法

@@FETCH_STATUS  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

返回类型

integer

返回值

返回值 说明
 0 FETCH 语句成功。
-1 FETCH 语句失败或行不在结果集中。
-2 提取的行不存在。
-9 游标未执行提取操作。

注解

由于 @@FETCH_STATUS 对于在一个连接上的所有游标都是全局性的,所以要谨慎使用。 在执行一条 FETCH 语句后,必须在对另一游标执行另一 FETCH 语句前测试 @@FETCH_STATUS。 在此连接上出现任何提取操作之前,@@FETCH_STATUS 没有定义。

例如,用户从一个游标执行一条 FETCH 语句,然后调用一个存储过程,此存储过程打开并处理另一个游标的结果。 从被调用的存储过程返回控制时,@@FETCH_STATUS 反映的是在存储过程中执行的最后的 FETCH 语句的结果,而不是在调用存储过程之前执行的 FETCH 语句的结果。

若要检索特定游标的最后提取状态,请查询 sys.dm_exec_cursors 动态管理函数的 fetch_status 列

示例

此示例使用 @@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  

另请参阅

游标函数 (Transact-SQL)
FETCH (Transact-SQL)