Oracle 开发篇+集合(关联数组)的使用案例

说明:本文为面向PL/SQL集合初学者的指导手册
标签:PL/SQL、集合、列式存储、PL/SQL优化、Collection
注意:案例使用的是关联数组的集合类型,其他类型略
用途:本文以SCOTT为例展示了集合的使用
优点:使用集合方便返回多行数据,而且集合可以将临时数据放在内存实现优化
缺点:比较占用内存
易学:文中删去了不需要的多余部分,让初学者一目了然一学就会
温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化


★ 常见问题
※ 故障提示:ORA-20000:ORU-10027:buffer overflow,limit of 10000 bytes
※ 解决方法:set serveroutput on size 100000000

※ 故障提示:PL/SQL: ORA-00913: too many values
※ 解决方法:select … into …如果返回多行数据时需要放入集合变量,而非常规变量或游标


set serveroutput on
declare
  v_3 pls_integer;
  v_1 varchar2(50);
  --Cursor
  cursor cur_1 is
    select * from scott.emp;
  re_cur_1 cur_1%ROWTYPE;
  --Collection
  type t_1 is table of varchar2(1000) index by pls_integer;
  v_2 t_1;
begin
  --遍历源表
  for re_cur_1 in cur_1 loop
    v_1 := re_cur_1.deptno;
    --SQL将返回多行数据,需要使用集合变量
    select ename bulk collect into v_2 from scott.emp where deptno = v_1;
    --输出集合变量
    v_3 := v_2.first;
    while (v_3 is not null) loop
      dbms_output.put_line(v_2(v_3));
      v_3 := v_2.next(v_3);
    end loop;
  end loop;
end;
/

※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

over

猜你喜欢

转载自blog.csdn.net/zzt_2009/article/details/115291910
今日推荐