
游标语句是通过Open语句进行赋值的,例如 open cur
如果想重新赋值,先把游标关闭,再重新打开就行了。
close cur;
open cur;
1、不用union的方式是达不到你说的效果的2、游标实际上是数据在内存中的地址,在open的时候将数据放入内存(如果内存足够大,能一次放下所有数据的话,实际上一般是部分放入内存),然后将这块内存的首地址返回,就是游标,指向第一条数据。
3、当fetch的时候,游标地址自动+1,指向下一条记录
4、所以游标实际上就是一个地址,指向数据的首地址,按照你的写法,每一次的open 都会将新的地址赋给游标,结果是如果游标名称一样的话,最后只会有最后的数据的首地址,而不会将三部分数据合并到一起。
declare @col varchar(100)declare mycorsor for select col from tableOPEN mycorsor FETCH NEXT FROM mycorsor INTO @col WHILE @@FETCH_STATUS = 0BEGINFETCH NEXT FROM mycorsor INTO @col -- *** 作你想 *** 作的endCLOSE mycorsor DEALLOCATE mycorsor --关闭并且释放了游标后,你就可以重新定义了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)