1

我正在编写一个需要同时操作多行并且需要对它们进行索引的函数。在阅读了有关 Oracle pl/sql 的几个小时后,我想我可以创建一个嵌套表类型的集合。由于我找不到明确的答案,而且试错法需要很长时间。这是问题部分: 问题:填充嵌套表集合的最佳实践是什么?甲骨文 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;
4

2 回答 2

2

游标 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;
/
于 2016-04-25T22:09:37.127 回答
0

尝试这个。希望这可以帮助您清除一些概念。

--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;
于 2016-04-26T06:27:25.017 回答