pl/sql创建临时全局表

pl/sql创建临时全局表,sql,oracle,Sql,Oracle,我是PL/SQL新手,我需要从3个表中创建一个临时表,并且记录集可用于报表,我只需要在会话期间重新设置。我想要 自从我听说临时全局表不是最好的选择以来,我想知道什么是最好的方法 表1:字段t1.pnum,t1.dnum t1.amount,t1.c\u amount 表2:字段t2.pnum、t2.dnum、t2.amount、t2.c\u amount 表3:字段t3.pnum、t3.dnum、t3.amount、t3.c\u amount 当pnum将表2和表3的结果合并到表1时,可以将

我是PL/SQL新手,我需要从3个表中创建一个临时表,并且记录集可用于报表,我只需要在会话期间重新设置。我想要 自从我听说临时全局表不是最好的选择以来,我想知道什么是最好的方法

  • 表1:
    字段t1.pnum,t1.dnum t1.amount,t1.c\u amount
  • 表2:
    字段t2.pnum、t2.dnum、t2.amount、t2.c\u amount
  • 表3:
    字段t3.pnum、t3.dnum、t3.amount、t3.c\u amount

当pnum将表2和表3的结果合并到表1时,可以将全局临时表作为常规模式对象创建,而不是使用PL/SQL“动态”创建。然后将其插入并从中选择。您插入的数据仅对您的会话可见,当您提交、断开或删除数据时,数据将消失


然而,你确定你需要它吗?您通常可以不使用GTT而使用公共表表达式(带子句)。

您可以将全局临时表创建为常规模式对象,而不是使用PL/SQL“动态”创建。然后将其插入并从中选择。您插入的数据仅对您的会话可见,当您提交、断开或删除数据时,数据将消失


然而,你确定你需要它吗?您通常可以不使用GTT而使用公共表表达式(带子句)。

为什么您认为需要在存储过程中使用GTT?为什么您认为需要在存储过程中使用GTT?谢谢David,我认为创建模式对象是最好的方法,我不熟悉公共表表达式,你能详细说明一下这个话题吗?非常感谢您的帮助谢谢David,我认为创建schema对象是最好的方法,我不熟悉常用的表表达式,请您详细介绍一下这个主题好吗?非常感谢你的帮助