如何在PL / SQL中创建内存表并从中进行选择?

时间:2016-08-24 19:58:50

标签: sql oracle plsql

我正在使用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是没有意义的。我只需要能够访问该表中的数据。

我不在此处包含实际代码,因为我不得不对大量工作进行重新编码,以免泄露公司信息。

1 个答案:

答案 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更友好