oracle中,cursor cur AS select * from emp,cur如何重新赋值?

oracle中,cursor cur AS select * from emp,cur如何重新赋值?,第1张

cursor cur AS select * from emp只是定义了游标,还没有赋值

游标语句是通过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 = 0

BEGINFETCH NEXT FROM mycorsor INTO @col -- *** 作你想 *** 作的endCLOSE mycorsor DEALLOCATE mycorsor --关闭并且释放了游标后,你就可以重新定义了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6718984.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-27
下一篇2023-03-27

发表评论

登录后才能评论

评论列表(0条)

    保存