如何在Oracle数据库中创建临时表?
收藏

我想在Oracle数据库中创建一个临时表

就像是

Declare table @table (int id)

在SQL Server中

然后用选择语句填充它

可能吗?

谢谢

最佳答案

是的,Oracle有临时表。这是描述它们的AskTom文章的链接,这是oracle的官方CREATE TABLE文档。

但是,在Oracle中,只有临时表中的数据是临时的。该表是其他会话可见的常规对象。在Oracle中频繁创建和删除临时表是一种不好的做法。

CREATE GLOBAL TEMPORARY TABLE today_sales(order_id NUMBER)
ON COMMIT PRESERVE ROWS;

Oracle 18c添加了私有临时表,这些临时表是单会话内存中的对象。有关更多详细信息,请参见文档。私有临时表可以动态创建和删除。

CREATE PRIVATE TEMPORARY TABLE ora$ptt_today_sales AS
SELECT * FROM orders WHERE order_date = SYSDATE;

临时表可能有用,但在Oracle中通常被滥用。通常可以通过使用内联视图将多个步骤组合到单个SQL语句中来避免它们。

    公众号
    关注公众号订阅更多技术干货!