创建全局临时表的实例

时间:2017-02-17 17:42:08

标签: oracle plsql temp-tables

我在架构级别创建了一个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与其他表。

1 个答案:

答案 0 :(得分:0)

你有2个表,A和B具有相同的结构。 (GTT,但从同一会话访问,所以我们可以忽略这一点) 你的问题我是否必须在运行时插入或者我只能使用一个?

这是一个问题,只有您可以根据插入内容的含义以及区分记录的需要来回答。 如果你需要区分这两个记录集(在A中插入的内容和在B中插入的内容),但是你没有任何关键来进行这种区分而不是你需要:在结构中添加一个新列,如“source”或insert进入不同的表格。

在会话中没有GTT的“多实例”概念,所以这不会起作用。