我正在使用Oracle的PL / SQL,并希望创建一个内存表,我可以从中选择。
我们说我的表只有20条记录,有两列: special_id(int),out_date(date)
我想收集这20条记录并将它们粘贴在内存中,所以我不必做同样的选择10,000次,我希望以后能够访问这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是没有意义的。我只需要能够访问该表中的数据。
我不在此处包含实际代码,因为我不得不对大量工作进行重新编码,以免泄露公司信息。
答案 0 :(得分:0)
如上所述,这样做可能没有多大意义,但您可以使用某种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);
3)享受,希望它有助于让plsql更友好