CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

能否同时使用两个游标???????????????????????

楼主lengfeng198267(冷风)2006-03-03 15:51:40 在 MS-SQL Server / 疑难问题 提问

在做存储过程时需要在一个while循环中嵌套一个while循环,每个while循环的判断条件都要用到  
  @@cursor_status,也就是说需要同时使用两个游标,麻烦的事就在这,@@cursor_status只有一个,  
  怎么办呢?是不是不仅有一个判断结束的全局变量? 问题点数:10、回复次数:3Top

1 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2006-03-03 15:56:36 得分 0

联机帮助里的例子——使用嵌套游标生成报表输出  
  ------------------------------------------------------------------------------------------------------------------------------  
  下例显示如何嵌套游标以生成复杂的报表。为每个作者声明内部游标。  
   
  SET   NOCOUNT   ON  
   
  DECLARE   @au_id   varchar(11),   @au_fname   varchar(20),   @au_lname   varchar(40),  
        @message   varchar(80),   @title   varchar(80)  
   
  PRINT   "--------   Utah   Authors   report   --------"  
   
  DECLARE   authors_cursor   CURSOR   FOR    
  SELECT   au_id,   au_fname,   au_lname  
  FROM   authors  
  WHERE   state   =   "UT"  
  ORDER   BY   au_id  
   
  OPEN   authors_cursor  
   
  FETCH   NEXT   FROM   authors_cursor    
  INTO   @au_id,   @au_fname,   @au_lname  
   
  WHILE   @@FETCH_STATUS   =   0  
  BEGIN  
        PRINT   "   "  
        SELECT   @message   =   "-----   Books   by   Author:   "   +    
              @au_fname   +   "   "   +   @au_lname  
   
        PRINT   @message  
   
        --   Declare   an   inner   cursor   based        
        --   on   au_id   from   the   outer   cursor.  
   
        DECLARE   titles_cursor   CURSOR   FOR    
        SELECT   t.title  
        FROM   titleauthor   ta,   titles   t  
        WHERE   ta.title_id   =   t.title_id   AND  
        ta.au_id   =   @au_id       --   Variable   value   from   the   outer   cursor  
   
        OPEN   titles_cursor  
        FETCH   NEXT   FROM   titles_cursor   INTO   @title  
   
        IF   @@FETCH_STATUS   <>   0    
              PRINT   "                   <<No   Books>>"            
   
        WHILE   @@FETCH_STATUS   =   0  
        BEGIN  
               
              SELECT   @message   =   "                   "   +   @title  
              PRINT   @message  
              FETCH   NEXT   FROM   titles_cursor   INTO   @title  
         
        END  
   
        CLOSE   titles_cursor  
        DEALLOCATE   titles_cursor  
         
        --   Get   the   next   author.  
        FETCH   NEXT   FROM   authors_cursor    
        INTO   @au_id,   @au_fname,   @au_lname  
  END  
   
  CLOSE   authors_cursor  
  DEALLOCATE   authors_cursor  
  GOTop

2 楼wgsasd311(自强不息)回复于 2006-03-03 16:03:02 得分 0

完全可以,请看联机帮助一段话  
   
  @@FETCH_STATUS  
  返回被   FETCH   语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。  
  语法  
  @@FETCH_STATUS  
   
  返回类型  
  integer  
   
  注释  
  由于   @@FETCH_STATUS   对于在一个连接上的所有游标是全局性的,要小心使用   @@FETCH_STATUS   。在执行一条   FETCH   语句后,必须在对另一游标执行另一   FETCH   语句前测试   @@FETCH_STATUS   。在任何提取操作出现在此连接上前,@@FETCH_STATUS   的值没有定义。  
   
  例如,用户从一个游标执行一条   FETCH   语句,然后调用一个存储过程,此存储过程打开并处理另一个游标的结果。当控制从被调用的存储过程返回后,@@FETCH_STATUS   反映的是在存储过程中执行的最后的   FETCH   语句的结果,而不是在存储过程被调用之前的   FETCH   语句的结果。  
   
  Top

3 楼mislrb(上班看看早报,上上CSDN,下班看看电影)回复于 2006-03-03 16:13:36 得分 0

当然是可以,最主要是及时切换  
  FETCH   NEXT   FROM     yourCursor   into   @var1,@var2  
   
  有点像VFP的,  
  select   1,在工作区1打开表A,进行表A移动,  
  再select   2,在工作区2打开表B,进行表B移动,  
   
  Top

相关问题

  • 游标使用
  • 游标使用?
  • 游标DECLARE Cur CURSOR FOR Select...From Deleted 能否使用Deleted ?
  • 游标的使用
  • 游标的使用
  • 使用游标太慢,能否有其它方法,请高手帮忙!
  • 存储过程返回的查询能否使用游标获得啊?谢谢!!
  • 游标使用的问题
  • 游标使用问题
  • 请教游标的使用?

关键词

  • 语句
  • 存储过程
  • 执行
  • 循环
  • 连接
  • 游标
  • fetch
  • au
  • cursor
  • 嵌套

得分解答快速导航

  • 帖主:lengfeng198267

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo