先运行以下代码,再运行该存储过程。
CLOSE ShenPi_cursor
DEALLOCATE ShenPi_cursor

解决方案 »

  1.   

    DEALLOCATE
    删除游标引用。当释放最后的游标引用时,组成该游标的数据结构由 Microsoft® SQL Server™ 释放。
      

  2.   

    你先执行一下:DEALLOCATE ShenPi_cursor
      

  3.   

    谢谢。。我先试一下DECLARE  ShenPi_cursor CURSOR FOR 
    select  distinct(a.ApplyId),b.AuditeStep  from   t_Apply a, t_Audite b  where b.UserId=@UserId and b.Depart=@Depart and a.ApplyState=0 or a.ApplyState=1 从这里面读数FETCH NEXT FROM ShenPi_cursor INTO @APID, @AUSTEP
    读出的数放入@APID, @AUSTEP
    两个变量中,,,通过这辆个变量去判断取数。
      

  4.   

    对游标进行操作的语句使用游标名称或游标变量引用游标。DEALLOCATE 删除游标与游标名称或游标变量之间的关联。如果一个名称或变量是最后引用游标的名称或变量,则将释放游标,游标使用的任何资源也随之释放。用于保护提取隔离的滚动锁在 DEALLOCATE 上释放。用于保护更新(包括通过游标进行的定位更新)的事务锁一直到事务结束才释放。
      

  5.   

    现在在分析器中测试:
    DECLARE @APID VARCHAR(15)
    DECLARE @AUSTEP INT
    DECLARE @AUSTEP_PRO INT
    DECLARE @SHENPI_FLAG INTDECLARE  ShenPi_cursor CURSOR  FOR  
    select  distinct(a.ApplyId),b.AuditeStep  from   t_Apply a, t_Audite b  
    where b.UserId='孙伟平' and b.Depart='销售部' and a.ApplyState=0 or a.ApplyState=1 OPEN ShenPi_cursor

    FETCH NEXT FROM ShenPi_cursor INTO @APID, @AUSTEP
    print @APID
    PRINT @AUSTEPCLOSE ShenPi_cursor
    DEALLOCATE ShenPi_cursor就只能够取道第一条记录?是什么原因?
      

  6.   

    1--不要最后一句的话:DEALLOCATE ShenPi_cursor
         提示ShenPi_cursor已经存在???
    2--DEALLOCATE ShenPi_cursor 放在最上面同样只可以取到一条记录?是什么原因???
      

  7.   

    利用循环While 不就可以吗
      

  8.   

    WHILE @@FETCH_STATUS = 0
    BEGIN  ...........    END