`
tomotoboy
  • 浏览: 166823 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

@@FETCH_STATUS

    博客分类:
  • SQL
阅读更多
@@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

分享到:
评论

相关推荐

    sql 游标、存储过程

    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; --读取下一行数据(将 ...

    sqlserver存储过程

    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_...

    transact-SQL

    在这个背景下,`@@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 =...

    原创 T_SQL 动态SQL 结合 游标 多表查询

    -- 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**:表示没有更多的行可以获取。 在处理游标时,...

    sql数据库学习资料

    这里`@@FETCH_STATUS`是一个系统变量,用于指示上一次`FETCH`语句的状态。如果`FETCH`成功,则`@@FETCH_STATUS = 0`;如果`FETCH`失败或已经到达结果集的末尾,则`@@FETCH_STATUS`不等于0。 **循环读取数据**: ``...

    sqlserverSET QUOTED_IDENTIFIER ON

    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

    利用SQL查询删除所有表及储过程

    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...

    常用sql server 编程技巧

    WHILE @@FETCH_STATUS = 0 BEGIN PRINT ''; SET @Message = '-----Products from Vendor: ' + @Vendor_Name; PRINT @Message; -- 内部游标:获取每个供应商的产品信息 DECLARE Product_Cursor CURSOR FOR ...

    当时自己初学SQL时,对游标很难理解,现在编写了一个实例游标循环,到时写SQL循环时方便些

    4. **循环处理**:通过`WHILE @@FETCH_STATUS = 0`检查是否还有更多记录可获取,如果`@@FETCH_STATUS`的值为0,则表示成功获取了一条记录。在循环体内,将每条记录的`AutoID`和修改过的`UserName`插入到临时表`#T1`...

    sql 数据库使用游标 随机插入数据

    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`语句释放游标占用...

    SQL Server 系统存储过程全局变量

    `@@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,...

    Transact-SQL游标[定义].pdf

    4. **处理记录**:在`WHILE`循环中,通过检查`@@FETCH_STATUS`的值来处理游标中的记录。当`@@FETCH_STATUS`等于0时,表示成功获取了新记录;-1表示已到达游标末尾或读取失败;-2表示记录可能被其他事务删除。`@@...

    四种SQL语句删除重复记录的方法

    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 ...

    自动备份多个数据库适用于SQL 2005 OR SQL 2008

    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 ...

Global site tag (gtag.js) - Google Analytics