日期:2014-05-18  浏览次数:20505 次

当我利用完一个游标之后能不能重新给这个游标赋上新的值?
比如:
declare usercursor cursor for select ID from user_table
open usercursor
....使用过程
然后我又需要重新使用这个游标,可以吗?就是要求usercursor的数据就像刚刚创建时的一样也是select ID from user_table
我知道可以重新创建另一个游标declare usercursor2 cursor for select ID from user_table
open usercursor2,选择相同的数据,但我想重新利用usercursor,怎么办?

------解决方案--------------------
樓主想做什麼呢?游標裏用同一個游標。
------解决方案--------------------
游标可以嵌套,不能递归。
------解决方案--------------------
不可以,需要重新建立
------解决方案--------------------
我记得游标可以倒着遍历
我猜可以,先倒着遍历让游标指到初始位置,再开始重新使用
不过这样感觉非常麻烦,还是新建比较好
------解决方案--------------------
使用scroll选项就好.以下在ss2008测试通过: 

SQL code

DECLARE @dt datetime

DECLARE db_cursor CURSOR SCROLL FOR  
SELECT SMT_Data 
FROM MASTER.dbo.tb   

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @dt   

WHILE @@FETCH_STATUS = 0   
BEGIN   
       print @dt 

       FETCH NEXT FROM db_cursor INTO @dt   
END   

---------------------------------------
print 'use the same cursor again'
FETCH FIRST FROM db_cursor INTO @dt   

WHILE @@FETCH_STATUS = 0   
BEGIN   
       print @dt 

       FETCH NEXT FROM db_cursor INTO @dt   
END   

CLOSE db_cursor   
DEALLOCATE db_cursor