我正在使用Oracle的PL/SQL,并希望创建一个内存表,从中我可以做选择。
假设我有一个只有20条记录和两列的表:special_id (int), out_date(日期)
我想收集这20条记录并将它们保存在内存中,这样我就不必重复10,000次select,并且我希望以后能够访问这20条记录。
然后我有一个循环运行不同的查询,我想在循环中做以下等价的操作:
select out_date
from in_memory_table
where in_memory_table.special_id = cursor.special_id (where cursor is from my current loop).
注意:在任何情况下循环in_mempry_table是没有意义的。我只需要能够访问该表中的数据。
我在这里没有包括实际的代码,因为我必须做大量的工作来重新编码,以便不泄露公司信息。
如上所述,这样做可能没有多大意义,但是您可以使用某种hashmap来为您完成这项工作。这使用了关联数组。
1)在程序开头填充hashmap
for x in (select out_date, special_id from input_table) loop
my_hashmap(x.special_id) := x.out_date;
end loop;
2)而不是选择,当你需要out_date
时,你可以使用
curr_out_date := my_hashmap(cursor.special_id);