Oracle custom object collection traversal

Functional requirements: Oracle defines the object collection, inserts the query result set into the object collection in batches, and loops through the attribute values ​​of the custom object collection.

-- 定义自定义对象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;
    

Guess you like

Origin blog.csdn.net/zhouzhiwengang/article/details/130359692