如何使用游标plsql

时间:2016-04-25 19:48:45

标签: oracle plsql nested-table

我正在编写一个需要同时操作多行的函数,需要对它们进行索引。在阅读了几个小时的关于Oracle pl / sql之后,我想我可以创建一个嵌套的表类集合。由于我找不到明确的答案,试用/错误方法会让位。 这是问题部分: 问题:填充嵌套表集合的最佳做法是什么? Oracle 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;

2 个答案:

答案 0 :(得分: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;
/

答案 1 :(得分: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;