批量資料處理
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;
/