@@FETCH_STATUS
返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
返回值描述
0FETCH 语句成功。
-1FETCH 语句失败或此行不在结果集中。
-2被提取的行不存在。
语法
@@FETCH_STATUS
返回类型
integer
注释
由于 @@FETCH_STATUS 对于在一个连接上的所有游标是全局性的,要小心使用 @@FETCH_STATUS 。在执行一条 FETCH 语句后,必须在对另一游标执行另一 FETCH 语句前测试 @@FETCH_STATUS 。在任何提取操作出现在此连接上前,@@FETCH_STATUS 的值没有定义。
例如,用户从一个游标执行一条 FETCH 语句,然后调用一个存储过程,此存储过程打开并处理另一个游标的结果。当控制从被调用的存储过程返回后,@@FETCH_STATUS 反映的是在存储过程中执行的最后的 FETCH 语句的结果,而不是在存储过程被调用之前的 FETCH 语句的结果。
示例
下面的示例用 @@FETCH_STATUS 控制在一个 WHILE 循环中的游标活动。
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName FROM Northwind.dbo.Employees
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
分享到:
相关推荐
WHILE @@FETCH_STATUS=0 BEGIN UPDATE t_dishes SET ordered_number = ordered_number + @OrderNum WHERE id = @DishId; --更新数据 FETCH NEXT FROM My_Cursor INTO @DishId, @OrderNum; --读取下一行数据(将 ...
WHILE (@@FETCH_STATUS = 0) BEGIN FETCH NEXT FROM @exec_cur INTO @Id, @UserName, @Address; PRINT 'Id: ' + CONVERT(VARCHAR, @Id) + ', name: ' + @UserName + ', Address: ' + @Address; END CLOSE @exec_...
在这个背景下,`@@FETCH_STATUS`是一个重要的`Transact-SQL`系统变量,用于处理游标操作。 游标是SQL中的一种功能,允许程序逐行处理查询结果,而不是一次性获取所有数据。`@@FETCH_STATUS`函数返回的是上一次`...
值得注意的是,`@@FETCH_STATUS`是一个内置的SQL Server系统变量,用于指示最近一次`FETCH`操作的状态。如果`@@FETCH_STATUS`为0,则表示成功获取到下一行;其他非零值表示错误或没有更多行可取。 总结来说,游标是...
WHILE @@FETCH_STATUS=0 BEGIN set @COUNT = PATINDEX( '%(%', @XM) IF @COUNT > 0 BEGIN SET @YXM = SUBSTRING(@XM,0,@COUNT) UPDATE JCXX SET XM = @YXM WHERE ID =...
-- Check @@FETCH_STATUS to see if there are any more rows to fetch. WHILE @@FETCH_STATUS = 0 BEGIN declare @strtemp varchar(50) -- Concatenate and display the current values in the variables. --...
- `@@FETCH_STATUS`是一个特殊的系统变量,用于指示上一次`FETCH`语句的状态。 - `-1`表示没有更多的记录。 - `-2`表示发生了错误,例如游标未打开。 - 其他值(例如0)表示成功获取了一条记录。 在循环体中还...
`@@FETCH_STATUS`是一个全局变量,用于指示上一次`FETCH`操作的状态。它返回的值有以下几种含义: - **0**:表示`FETCH`成功。 - **-1**:表示`FETCH`失败。 - **-2**:表示没有更多的行可以获取。 在处理游标时,...
这里`@@FETCH_STATUS`是一个系统变量,用于指示上一次`FETCH`语句的状态。如果`FETCH`成功,则`@@FETCH_STATUS = 0`;如果`FETCH`失败或已经到达结果集的末尾,则`@@FETCH_STATUS`不等于0。 **循环读取数据**: ``...
SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER PROCEDURE test @From varchar(100)="zhang.zhanling@itgemini.net" , @To varchar(100)=...WHILE @@FETCH_STATUS = 0 BEGIN SELECT @NUM = @NUM+1
while(@@fetch_status=0) begin exec(@c1) fetch next from c1 into @c1 end close c1 deallocate c1 --删除表 DECLARE c2 cursor for select 'drop table ['+name +']; ' from sysobjects where...
WHILE @@FETCH_STATUS = 0 BEGIN PRINT ''; SET @Message = '-----Products from Vendor: ' + @Vendor_Name; PRINT @Message; -- 内部游标:获取每个供应商的产品信息 DECLARE Product_Cursor CURSOR FOR ...
4. **循环处理**:通过`WHILE @@FETCH_STATUS = 0`检查是否还有更多记录可获取,如果`@@FETCH_STATUS`的值为0,则表示成功获取了一条记录。在循环体内,将每条记录的`AutoID`和修改过的`UserName`插入到临时表`#T1`...
WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @ddx float; DECLARE @ddy float; -- 如果没有更多数据,则跳出循环 IF @@FETCH_STATUS <> 0 BREAK; -- 生成随机数并更新坐标值 SET @ddx = 39.92 + RAND() * 0.22;...
- **检查是否还有更多数据**:使用`@@FETCH_STATUS`变量来判断是否有更多的数据可供获取。 - **关闭游标**:使用`CLOSE cursor_name`语句关闭游标。 - **释放游标**:使用`DEALLOCATE cursor_name`语句释放游标占用...
`@@FETCH_STATUS`返回最后一次`FETCH`语句的执行状态。它可以帮助确定游标操作是否成功,或者是否已达到数据集的末尾。 #### 6. `@@IDENTITY` `@@IDENTITY`返回最近一次插入具有标识列的表中的标识值。这对于在...
WHILE @@FETCH_STATUS = 0 BEGIN -- Do the showcontig of all indexes of the table INSERT INTO #fraglist EXEC ('DBCC SHOWCONTIG (''' + @tablename + ''') WITH FAST, TABLERESULTS, ALL_INDEXES,...
4. **处理记录**:在`WHILE`循环中,通过检查`@@FETCH_STATUS`的值来处理游标中的记录。当`@@FETCH_STATUS`等于0时,表示成功获取了新记录;-1表示已到达游标末尾或读取失败;-2表示记录可能被其他事务删除。`@@...
WHILE @@FETCH_STATUS = 0 BEGIN SELECT @max = @max - 1; SET ROWCOUNT @max; DELETE FROM [your_table] WHERE id = @id; FETCH cur_rows INTO @id, @max; END CLOSE cur_rows; DEALLOCATE cur_rows; SET ...
WHILE (@@FETCH_STATUS = 0) BEGIN SET @bak_file_name = @bak_path + '' + @db_name + '_' + CONVERT(VARCHAR(10), GETDATE(), 120) + '.bak'; BACKUP DATABASE @db_name TO DISK = @bak_file_name; FETCH NEXT ...