如何在PL/SQL中创建和选择内存表



我正在使用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);

最新更新