【问题标题】:Trying to Create a temp table in Oracle尝试在 Oracle 中创建临时表
【发布时间】:2018-12-18 16:57:41
【问题描述】:

尝试创建临时表时收到错误消息。我直接从 Oracle 的网站复制了这段代码。我还下载了最新版本 18.2。我在这里错过了什么?

CREATE PRIVATE TEMPORARY TABLE ora$ptt_my_temp_table 
(
  id           NUMBER(10,2),
  description  VARCHAR2(20)
)
ON COMMIT PRESERVE DEFINITION;

错误信息:

Error starting at line : 1 in command -
CREATE PRIVATE TEMPORARY TABLE ora$ptt_my_temp_table 
(
  id           NUMBER(10,2),
  description  VARCHAR2(20)
)
ON COMMIT PRESERVE DEFINITION
Error report -
ORA-00905: missing keyword
00905. 00000 -  "missing keyword"
*Cause:    
*Action:

【问题讨论】:

  • 您确定连接到 Oracle 18c 吗?我猜 18.2 是 SQL Developer(客户端工具)的版本。
  • 我习惯使用 Microsoft SQL。我怎么知道我是否连接到 Oracle 18c。
  • 你混合了很多东西。首先是 Microsoft SQL Server != Oracle DB。第二个客户端工具(SQL Developer/SSMS)!= 服务器端数据库。最后,您发布的示例清楚地表明您需要连接到支持私有临时表(即 18c)的实例。我建议发布您的客户端工具和确切查询的屏幕截图。我猜你已经连接到 Oracle 11g/12c。
  • 试试select * from v$version v where v.banner like 'Oracle Database%'; 对于 SQL Developer 应用程序,它应该在启动初始屏幕和标准帮助 > 关于下显示一个版本号。
  • 上述语句在 18c livesql.oracle.com 中运行良好,但在早期版本中给出了 ORA-00905: missing keyword。投票结束。

标签: oracle temp-tables


【解决方案1】:

我想您不是在 Oracle 18c 上,而是在一些较低版本(不知道 private 临时表)。因此,我建议你运行

CREATE GLOBAL TEMPORARY TABLE ora$ptt_my_temp_table 
(
  id           NUMBER(10,2),
  description  VARCHAR2(20)
)
ON COMMIT PRESERVE ROWS;

然后继续。

【讨论】:

  • 全局临时表与私有表不同,因为它们是永久性结构。
猜你喜欢
  • 2019-12-07
  • 2015-12-12
  • 1970-01-01
  • 2016-04-02
  • 2014-11-23
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 2019-04-04
相关资源
最近更新 更多