`
tomotoboy
  • 浏览: 162518 次
  • 性别: 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_...

    从数据库中批量提取数据

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

    查询误删除数据表的存储过程

    WHILE @@fetch_status = 0 BEGIN IF @@fetch_status = -2 CONTINUE BEGIN TRANSACTION SET @sqlStr = @sqlStr + CAST(@fields as nvarchar(128)) + ',' IF @@error = 0 BEGIN COMMIT END ELSE ...

    关于水晶报表9中对图片的处理

    pattern_id,nrc_pattern_path from #nrc_pattern_tmp open cur_nrc_pattern fetch cur_nrc_pattern into @pattern_id_tmp, @fname while @@fetch_status = 0 begin --create the data process answer file set @m_...

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

    整理数据库

    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-实验报告.doc

    @xszl_abc int,@xsze_abc int fetch next from abc_cursor into @year_abc, @cph_abc,@cpm_abc ,@xszl_abc,@xsze_abc while @@FETCH_STATUS = 0 begin if(@year_abc in(select 年 from nxsb)and @cph_abc in (select...

    删除表中重复记录

    declare @max integer,@id integerdeclare cur_rows cursor local for select id,count(*) from 表名 group by id having count(*) > 1open cur_rowsfetch cur_rows into @id,@maxwhile @@fetch_status=0beginselect...

    sql游标实例,更新行

    While @@FETCH_STATUS = 0 Begin re: set @DID = 0 set @DID = (Select min(FDetailID) From tmp_Batch Where FNumber = @Number And FSPID = @SPID And FQty <> 0 ) set @BatchNo =(Select FBatchNo From tmp_...

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

    当时自己初学SQL时,对游标很难理解,现在编写了一个实例游标循环,到时写SQL循环时方便些 declare cursor1 cursor for select *from bb --把...while @@fetch_status=0 --返回值成功的时候循环 以上是我个人的理解

    关于游标使用sql

    WHILE @@fetch_status = 0 BEGIN PRINT @value; --填充下一条数据. FETCH NEXT FROM c_test_main INTO @id, @value; END; -- 关闭游标 CLOSE c_test_main; --释放游标. DEALLOCATE c_test_main; ...

    transact-SQL

    SQL游标函数 @@FETCH_STATUS 返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。

    SQL sever 实训

    WHILE @@FETCH_STATUS =0 BEGIN PRINT '产品编号 产品名称 销售日期 销售数量 销售金额' PRINT @ProNo+' '+@ProName+' '+STR(YEAR(@SaleDate))+'-'+STR(MONTH(@SaleDate)) +'-'+STR(DAY(@SaleDate))+' '+@Quantity+...

    删除数据库中重复数据的几个方法

    方法一 declare @max integer,@id integer ...@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete from 表名 where 主字段 = @id fetch cur_rows into @id,@

    SQL2005经典问题教程

    while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete from 表名 where 主字段 = @id fetch cur_rows into @id,@max end close cur_rows set rowcount 0 方法二 有两个意义上的重复记录...

    SqlServer强制断开数据库已有连接的方法

    代码如下: declare @i int declare cur cursor for select spid from sysprocesses where db_name(dbid)= ‘Your_Database_Name’ open cur fetch next from cur into @i while @@fetch_status=0 begin

Global site tag (gtag.js) - Google Analytics