批量数据处理

select 语句中不允许使用本地集合。因此,第一步是创建模式级别集合。如果集合不是模式级别并且在 SELECT 语句中使用,那么它将导致“PLS-00642:SQL 语句中不允许本地集合类型”

CREATE OR REPLACE TYPE table1_t IS OBJECT (
a_1 INTEGER,
a_2 VARCHAR2(10)
);

- 收集权限,以便可以在数据库中公开使用

     GRANT EXECUTE ON table1_t TO PUBLIC;
     CREATE OR REPLACE TYPE table1_tbl_typ IS TABLE OF table1_t;
     GRANT EXECUTE ON table1_tbl_typ TO PUBLIC;

- 从表中获取数据到集合中,然后遍历集合并打印数据。

    DECLARE
     table1_tbl table1_tbl_typ;
    BEGIN
     table1_tbl := table1_tbl_typ();
      SELECT table1_t(a_1,a_2)  
      BULK COLLECT INTO table1_tbl 
      FROM table1 WHERE ROWNUM<10;

     FOR rec IN (SELECT a_1 FROM TABLE(table1_tbl))--table(table1_tbl) won't give error)
     LOOP
       dbms_output.put_line('a_1'||rec.a_1);
       dbms_output.put_line('a_2'||rec.a_2);
     END LOOP;
    END;
/