显式游标的定义:
declare aaa_cursor is select * from testtable; --定义游标 declare v_aa aaa_cursor%rowtype; --使用游标行类型,和记录行类型一样,非常方便。
隐式游标则可直接使用:
for v_aa in aaa_cursor loop end loop;
这样就完成了一次隐式游标的调用,可以看到此种方式类似于高级语言的for循环。
而显式游标定义、打开与调用是分开的:
open aaa_cursor; loop fetch aaa_cursor into v_aa; exit when aaa_cursor%notfound; end loop;
这是一个繁琐的显式游标调用过程,循环以exit when aaa_cursor%notfound形式的语句退出。
然而在某些情况下显式游标使用起来会更加灵活。在隐式游标的for语句调用中,类似for语句,在取不到下条记录的情况下,不会进入循环体而会直接退出。这在某些情况下会造成一些不便,比如在无更多数据时应对最后一组数据进行处理再退出。此时显式游标以aaa_cursor%notfound条件判定再退出的形式就会有用的多,可以在循环体内根据aaa_cursor%notfound的条件手动控制退出的时机,进行最后一次处理。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/353.html