最有效的填充一个密集型关联数组的方式是使用 SELECT INTO 语句带上 BULK COLLECT INTO 子句。

    注意:

    如果一个密集型关联数组要填充的内容非常多,以至于 SELECT 语句会返回一个很大的结果集导致内存放不下,那么不要使用 SELECT 语句。可以通过游标和 FETCH 语句带上 BULK COLLECT INTO 和 LIMIT 子句来填充。

    填充一个稀疏型关联数组时不能使用 SELECT 语句,可以在 FOR LOOP 循环语句里使用赋值语句。

    下面示例使用 SELECT 语句填充按整型索引的关联数组,然后使用 FOR LOOP 语句填充一个按字符串索引的稀疏型关联数组。

    示例:填充关联数组

    1. BEGIN
    2. -- 填充关联数组
    3. SELECT "W_ID","W_YTD","W_TAX","W_NAME","W_STREET_1","W_STREET_2","W_CITY","W_STATE","W_ZIP"
    4. BULK COLLECT INTO tab_wares FROM ware;
    5. FOR i IN 1..tab_wares.COUNT LOOP
    6. tab_ware_cities( tab_wares(i).w_name ) := tab_wares(i).w_city ;
    7. END LOOP;
    8. END;
    9. /