Oracle-集合表行类型使用

2020年06月29日 19:21 · 阅读(132) ·

开发环境

名称 版本
操作系统 Windows 10 X64
Oracle win64_11gR2_database
PLSQL Developer 11.0.4.1788(64 bit)01.179332 - Unlimited user license

测试表-TEST_V_HWHAO1

名称 类型 默认值
NO VARCHAR2(10)
Name VARCHAR2(10)
ID VARCHAR2(64) SYS_GUID()

测试数据

  1. select t.rowid,t.* from test_v_hwhao1 t

ROWTYPE INDEX BY BINARY_INTEGER

  1. declare
  2. --IS TABLE OF :指定是一个集合的表的数组类型,简单的来说就是一个可以存储一列多行的数据类型。
  3. --%ROWTYPE :来定义一个表示表中一行记录的变量
  4. --INDEX BY BINARY_INTEGER:指索引组织类型
  5. TYPE type_test_v_hwhao1 IS TABLE OF test_v_hwhao1%ROWTYPE INDEX BY BINARY_INTEGER;
  6. v_array_v_hwhao1 type_test_v_hwhao1;
  7. begin
  8. --BULK COLLECT :指是一个成批聚合类型,简单的来说 , 它可以存储一个多行多列存储类型,采用BULK COLLECT可以将查询结果一次性地加载到集合中。
  9. SELECT *
  10. BULK COLLECT INTO v_array_v_hwhao1
  11. FROM test_v_hwhao1;
  12. FOR i IN 1..v_array_v_hwhao1.COUNT LOOP
  13. dbms_output.put_line(v_array_v_hwhao1(i).NO);
  14. dbms_output.put_line(v_array_v_hwhao1(i).Name);
  15. dbms_output.put_line('');
  16. END LOOP;
  17. end;

输出

  1. 002
  2. luoma_2
  3. 003
  4. luoma_3
  5. 001
  6. luoma

INDEX BY BINARY_INTEGER

  1. declare
  2. TYPE test_v_hwhao1_type IS RECORD(
  3. id varchar2(64),
  4. no number,
  5. name varchar2(100),
  6. parentno varchar2(100)
  7. );
  8. --IS TABLE OF :指定是一个集合的表的数组类型,简单的来说就是一个可以存储一列多行的数据类型。
  9. --INDEX BY BINARY_INTEGER:指索引组织类型
  10. TYPE v_array_v_hwhao1 IS TABLE OF test_v_hwhao1_type INDEX BY BINARY_INTEGER;
  11. p_split_tab v_array_v_hwhao1;
  12. begin
  13. p_split_tab(1).id := '20';
  14. p_split_tab(1).no := '20';
  15. p_split_tab(1).name := '20-name';
  16. p_split_tab(1).parentno := '20-parentno';
  17. FOR i IN 1..p_split_tab.COUNT LOOP
  18. insert into test_v_hwhao1 values p_split_tab(i);
  19. dbms_output.put_line('----' || i);
  20. END LOOP;
  21. end;
  22. -- select * from test_v_hwhao1
  • 查询结果
  1. select * from test_v_hwhao1
ID NO NAME PARENTNO
20 20 20-name 20-parentno