如何使用游标 plsql 插入嵌套 table 集合

how to insert into nested table collection using cursor plsql

我正在编写一个需要同时操作多行的函数,并且需要对它们进行索引。在阅读了 Oracle pl/sql 几个小时后,我想我可以创建一个嵌套的 table 类集合。由于我找不到明确的答案,并且 trial/error 方法需要很长时间。 下面是问题部分: 问题:填充嵌套 table 集合的最佳做法是什么?甲骨文 PL/SQL

       type partsTable is table of Parts_north_wing%rowtype;
       pt PartsTable;    
       index number;         
       cursor pCursor is select * from Parts_north_wing;
begin
        index := 1;
        open pCursor;
        loop
                fetch pCursor into tempRow;
                pt(index) := tempRow;
                index := index + 1;
                exit when pCursor%notfound;
        end loop;
        close pCursor;

游标 FOR LOOP 几乎总是处理 PL/SQL 中行的最佳方式。它比 OPEN/FETCH/CLOSE 方法更简单——不需要声明变量和操作游标。它也更快,因为它会自动批量收集结果。

begin
    for pt in
    (
        select parts_north_wing.*, rownum row_index
        from parts_north_wing
    ) loop
        --Do something here
        null;
    end loop;
end;
/

试试这个。希望这能帮助你理清一些概念。

--Create a dummy object tyep
CREATE OR REPLACE TYPE av_obj
IS
  OBJECT
  (
    ADD1 VARCHAR2(100),
    ADD2 VARCHAR2(100) );
  --Create a nested tale type

CREATE OR REPLACE TYPE AV_TT
IS
  TABLE OF AV_OBJ;

  --Bulk collect into nested table type
  DECLARE
    av_nested_tab AVROY.AV_TT;
  BEGIN
    SELECT avroy.av_obj(LEVEL
      ||'add1',LEVEL
      ||'add2') BULK COLLECT
    INTO av_nested_tab
    FROM DUAL
      CONNECT BY LEVEL < 10;
  END;