谢谢!还有几个小疑问可否解答一下:
1.在我的游标中有大量的数据,但是没有出来的却是有两百多条,这种情况我觉得不太像是游标的问题2.在plsql进行查询时,例如select * from emp,这个emp表中有几千万条数据,但是在plsql中查询的时候,点击显示所有内容时,会出现“Result set exceeds the maximum size (100M),if nexessary,you can explicitly continue this query.”这样的提示,游标也会有这样的限制吗?
1.首先你要理解游标的作用。
以下面的code为例:
declare
cursor c1 is select * from large_table(几千万的数据);
begin
for acct in c1 loop --打开游标
--- 对每行数据进行特定操作
if 条件 then --当满足一定条件时跳出游标
exit;
end if;
end loop;
end;
从以上例子看出,游标中不可能存大量数据,它保存的只是指向一条记录的指针。当第一次打开游标时,指针指向select的第一行数据。当第二次循环时,指针下移,指向第二条数据。
当满足if条件的时候,就会跳出游标。因此游标不一定会遍历select中的所有数据。
2.第二个问题我也遇到过,你在用plsql 将所有的记录进行显示的时候,实际上是将这些记录都缓存到你PC的内存里。而游标每次只会提取一条数据,进行操作,所以不会有你这样的限制。
我现在出现这样一个问题,就是数据量很大,但是发现游标并没有都读取出来,所以会由此一问!
追答那应该是你的游标写错了。
你知道游标和变量存储空间的关系吗?
追答startup nomount启动数据时会显示