在Oracle SQL中创建全局临时表

时间:2018-06-08 08:23:42

标签: sql oracle temp-tables

我是SQL新手。我想在Oracle SQL中创建一个(全局或非全局)临时表,其中包括SELECT * FROM tbl_NAME WHERE...形式的简单数据选择,并在会话结束后删除(就像MSFT SQL临时表一样)形式为##tbl_NAME)。

我在网上找到了一种方法:

CREATE GLOBAL TEMPORARY TABLE tmp_table
SELECT * FROM tbl_NAME WHERE conditions.
ON COMMIT PRESERVE ROWS;

虽然我收到错误 ORA-00904:无效标识符

我还发现另一种选择是

CREATE PRIVATE TEMPORARY TABLE tmp_table AS 
SELECT * FROM tbl_NAME WHERE conditions;

,错误 ORA-00905:缺少关键字

请注意,我已经知道一个有效的替代方案是:

DROP TABLE    tmp_table;
CREATE TABLE    tmp_table AS 
SELECT      * FROM tbl_NAME; 
DROP TABLE    tmp_table;

2 个答案:

答案 0 :(得分:1)

首先要对做什么;接下来是SELECT

SQL> create global temporary table gtt_dept
  2  on commit preserve rows                       --> first
  3  as
  4  select * from dept;                         --> next

Table created.

SQL>

答案 1 :(得分:0)

您显示的以下格式适用于TERADATA

CREATE GLOBAL TEMPORARY TABLE tmp_table SELECT * FROM tbl_NAME WHERE条件。 在COMMIT PRESERVE ROWS;

在Oracle中它的工作原理如下

创建全局临时表gtt_dept on commit preserve rows
如 select * from dept;