开发环境
名称 |
版本 |
操作系统 |
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() |
测试数据
select t.rowid,t.* from test_v_hwhao1 t
ROWTYPE INDEX BY BINARY_INTEGER
declare
--IS TABLE OF :指定是一个集合的表的数组类型,简单的来说就是一个可以存储一列多行的数据类型。
--%ROWTYPE :来定义一个表示表中一行记录的变量
--INDEX BY BINARY_INTEGER:指索引组织类型
TYPE type_test_v_hwhao1 IS TABLE OF test_v_hwhao1%ROWTYPE INDEX BY BINARY_INTEGER;
v_array_v_hwhao1 type_test_v_hwhao1;
begin
--BULK COLLECT :指是一个成批聚合类型,简单的来说 , 它可以存储一个多行多列存储类型,采用BULK COLLECT可以将查询结果一次性地加载到集合中。
SELECT *
BULK COLLECT INTO v_array_v_hwhao1
FROM test_v_hwhao1;
FOR i IN 1..v_array_v_hwhao1.COUNT LOOP
dbms_output.put_line(v_array_v_hwhao1(i).NO);
dbms_output.put_line(v_array_v_hwhao1(i).Name);
dbms_output.put_line('');
END LOOP;
end;
输出
002
luoma_2
003
luoma_3
001
luoma
INDEX BY BINARY_INTEGER
declare
TYPE test_v_hwhao1_type IS RECORD(
id varchar2(64),
no number,
name varchar2(100),
parentno varchar2(100)
);
--IS TABLE OF :指定是一个集合的表的数组类型,简单的来说就是一个可以存储一列多行的数据类型。
--INDEX BY BINARY_INTEGER:指索引组织类型
TYPE v_array_v_hwhao1 IS TABLE OF test_v_hwhao1_type INDEX BY BINARY_INTEGER;
p_split_tab v_array_v_hwhao1;
begin
p_split_tab(1).id := '20';
p_split_tab(1).no := '20';
p_split_tab(1).name := '20-name';
p_split_tab(1).parentno := '20-parentno';
FOR i IN 1..p_split_tab.COUNT LOOP
insert into test_v_hwhao1 values p_split_tab(i);
dbms_output.put_line('----' || i);
END LOOP;
end;
-- select * from test_v_hwhao1
select * from test_v_hwhao1
ID |
NO |
NAME |
PARENTNO |
20 |
20 |
20-name |
20-parentno |