我正在编写一个需要同时操作多行的函数,需要对它们进行索引。在阅读了几个小时的关于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;
答案 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;