数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle中巧用bulkcollect实现cursor批量fetch


发布日期:2022年02月08日
 
Oracle中巧用bulkcollect实现cursor批量fetch

在一般的情况下使用批量fetch的几率并不是很多但是Oracle提供了这个功能我们最好能熟悉一下说不定什么时候会用上它

declare

cursorcisselect*fromt_depart;

v_departt_depart%rowtype;

typev_code_typeistableoft_departdepart_code%type;

v_codev_code_type;

typev_name_typeistableoft_departdepart_name%type;

v_namev_name_type;

begin

openc;

fetchcbulkcollectintov_codev_name;

foriinuntloop

dbms_outputput_line(v_code(i)||||v_name(i));

endloop;

closec;

end;

通过上面的这个例子大家可以发现如果列很多的话为每一列定义一个集合似乎有些繁琐可以把集合和%rowtype结合起来一起使用来简化程序!

declare

cursorcisselect*fromt_depart;

typev_depart_typeistableoft_depart%rowtype;

v_departv_depart_type;

begin

openc;

fetchcbulkcollectintov_depart;

foriinuntloop

dbms_outputput_line(v_depart(i)depart_code||||

v_depart(i)depart_name);

endloop;

closec;

end;

在输出结果时既可以使用集合的count属性和可以使用first和last在引用%rowtype类型的内容时还有一个需要注意的地方是v_depart(i)depart_code而不是v_departdepart_code(i)当然没有这样的写法即使有意义也并不一样

declare

cursorcisselect*fromt_depart;

typev_depart_typeistableoft_depart%rowtype;

v_departv_depart_type;

begin

openc;

fetchcbulkcollectintov_depart;

foriinv_departfirstv_departlastloop

dbms_outputput_line(v_depart(i)depart_code||||

v_depart(i)depart_name);

endloop;

closec;

end;

上一篇:ORACLE内置函数大全

下一篇:用SQL实现其他进制到十进制的转换