最有效的填充一个密集型关联数组的方式是使用 SELECT INTO 语句带上 BULK COLLECT INTO 子句。
注意:
如果一个密集型关联数组要填充的内容非常多,以至于 SELECT 语句会返回一个很大的结果集导致内存放不下,那么不要使用 SELECT 语句。可以通过游标和 FETCH 语句带上 BULK COLLECT INTO 和 LIMIT 子句来填充。
填充一个稀疏型关联数组时不能使用 SELECT 语句,可以在 FOR LOOP 循环语句里使用赋值语句。
下面示例使用 SELECT 语句填充按整型索引的关联数组,然后使用 FOR LOOP 语句填充一个按字符串索引的稀疏型关联数组。
示例:填充关联数组
BEGIN
-- 填充关联数组
SELECT "W_ID","W_YTD","W_TAX","W_NAME","W_STREET_1","W_STREET_2","W_CITY","W_STATE","W_ZIP"
BULK COLLECT INTO tab_wares FROM ware;
FOR i IN 1..tab_wares.COUNT LOOP
tab_ware_cities( tab_wares(i).w_name ) := tab_wares(i).w_city ;
END LOOP;
END;
/