我在架构级别创建了一个GTT
CREATE GLOBAL TEMPORARY TABLE schema1.gtt1
(
col1 type1,
col2 type2,
...
)
ON COMMIT PRESERVE ROWS;
现在我可以很容易地从PLSQL块/过程/函数中引用该表:
INSERT INTO schema1.gtt1
select col1, col2, ... from ...;
但是如果在同一个PLSQL块中我想在另一个全局临时表(GTT)中插入与我创建的结构相同的结构?
我是否必须创建另一个GTT,并给它另一个名称,即使它具有相同的结构(我认为它会很尴尬)?或者我可以以某种方式创建GTT的多个实例?
不知道它是否相关,但我将在同一个PLSQL块中加入GTT与其他表。
答案 0 :(得分:0)
你有2个表,A和B具有相同的结构。 (GTT,但从同一会话访问,所以我们可以忽略这一点) 你的问题我是否必须在运行时插入或者我只能使用一个?
这是一个问题,只有您可以根据插入内容的含义以及区分记录的需要来回答。 如果你需要区分这两个记录集(在A中插入的内容和在B中插入的内容),但是你没有任何关键来进行这种区分而不是你需要:在结构中添加一个新列,如“source”或insert进入不同的表格。
在会话中没有GTT的“多实例”概念,所以这不会起作用。