功能要求:Oracle 定义对象集合,将查询结果集批量插入对象集合,循环遍历自定义对象集合属性值。
-- 定义自定义对象Object
create or replace type HOUSE is object{
-- 定义biz_id 属性
biz_id varchar2(50),
-- 定义project_id 属性
project_id varchar2(50),
-- 定义project_name 属性
project_name varchar2(128)
}
-- 自定义存储过程
create or replace produce pro_foreach is
-- 自定义 Table, 装载HOUSE 对象
type MyHouseList is table of HOUSE;
-- 声明对象集合
v_records MyHouseList;
begin
-- 定义游标,执行查询和遍历
for cur in (select p.project_id, p.project_name from BASE_PROJECT p group by p.project_name, p.project_id having(p.project_id) > 2 ) Loop
-- 查询数据插入集合对象v_records
select HOUSE(i.biz_id, i.project_id, i.project_name) bulk collect into v_records from BASE_BUILDING i where i.project_id = cur.project_id;
-- 遍历 集合对象v_records
for i in v_records.FIRST..v_records.LAST Loop
DBMS_OUTPUT.PUT_LINE(v_records(i).biz_id)
end Loop;
end Loop;
end;