oracle是否有一种可以在存储过程中使用的内存表,可以用来保存查询结果并多次使用,做join查询merge更新用

在编写oracle的存储过程中,经常会有这么一种场景,就是查询一个符合条件的结果集,在接下来的多处语句中会使用这个结果集,用来做join关联查询,或作为merge into批量更新的useing级联表使用,数组集合是不能实现的,临时表可以,但是总是要提前创建好临时,而且如果应用场景变更需要修改临时表的表结构,发布新版本程序的时候就要同步更新临时表的定义,有没有一种可以方便定义修改的跟好用的临时表呢,或者其他数据类型。

create table 表名 (字段) storage (buffer_pool keep); --建表时把表缓存到KEEP中
是说这个?

  1. 数据集合是可以作为表来查询的,使用table()函数即可,但的确无法以操作表的方式来修改它的数据或者结构
  2. 在ORACLE18c中,引入了一个新的特性,叫私有临时表,只会在一个会话或者一个事务内有效,不同的会话就算使用相同的表名也不冲突。而且私有临时表创建后在DBA_OBJECTS和DBA_TABLES中也找不到