如何在PL / SQL中编写FOR EACH循环?

时间:2012-03-22 16:54:09

标签: sql plsql

是否可以为PL / SQL阵列上的每个循环运行一个?

2 个答案:

答案 0 :(得分:11)

for i in my_array.first ..my_array.last loop
  --do_something with my_array(i);
end loop;

答案 1 :(得分:1)

无法使用带有FOR循环的非数字索引迭代关联数组。下面的解决方案很好用。

-- for-each key in (associative-array) loop ... 
declare
    type items_type is table of varchar2(32) index by varchar2(32);
    items items_type;
begin
    items('10') := 'item 10';
    items('20') := 'item 20';
    items('30') := 'item 30';
    dbms_output.put_line('items=' || items.count); 

    <<for_each>> declare key varchar2(32); begin loop 
        key := case when key is null then items.first else items.next(key) end; 
        exit when key is null;
        dbms_output.put_line('item(' || key || ')=' || items(key));
        --do something with an item
    end loop; end for_each;
end;