当前位置: 首页 > 面试题库 >

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

夹谷琨
2023-03-14
问题内容

我想在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;

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

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

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



 类似资料:
  • 我已经在我的机器上安装了Oracle 11g XE。现在我通过系统模式连接它。如何创建自己的数据库。就像在MS SQL中使用 如何在Oracle11gXe中创建这样的数据库。

  • 问题内容: 假设我有某种类型: 现在我想基于这种类型创建一个临时表,我该怎么做? 同样,从此:基于用户定义的类型创建表: 问题答案: [\Pure.Krome的答案)显示了如何使用表变量而不是#temp表。如果您确实想要基于已知表类型的#temp表(而不必知道列名/定义),则可以说: 现在,应与表类型的表结构匹配,减去约束(以及从SQL Server 2014开始的边际有用的二级索引)。 当然,随

  • 在此容器中只存在默认DB。 如何创建数据库?

  • 问题内容: 我正在使用Hibernate租约,并且每次用户登录时,我都将数据库更改为其用户名(SQLite)。可悲的是,有时数据库不存在,我需要创建它。 问题是我不知道如何在运行时在数据库中创建所有表。 通常,Hibernete为此创建数据库: 问题答案: 创建数据库之后,可以为此使用SchemaExport导出要在新创建的数据库中创建的实体。基本步骤如下。如何获取配置的属性并不重要。 Javad

  • 问题内容: 我目前正在为一家餐馆开发门户应用程序。使用的后端数据库是Mysql,而我正在使用Spring JDBC支持来编写数据访问逻辑。 我的某些DAO充满了多个查询,并且正获得多达数千行的代码。我认为我可以通过将一些逻辑移到SQL- PSM过程中来减少大小和复杂性(因为Java中的数据绑定和粘合代码是令人讨厌的事情)。 但是,我对Db没有DDL权限,因此无法创建该过程。 我想知道是否有一种方法

  • 我申请了一家公司的实习,作为一个问题,他们要求我为他们的公司创建一个有特定要求的模式,并将DDL文件邮寄给他们。我已经安装了Oracle数据库11g Express版本,但是如何在Oracle数据库11g中创建新的模式?我在网上搜索了一个解决方案,但我不明白该怎么办。创建架构后,我应该邮寄哪个文件?