我可以在Oracle 12c中声明本地临时表吗

时间:2019-06-18 12:52:41

标签: oracle sqlplus oracle12c

我正在尝试使用Oracle / PLSQL: LOCAL TEMPORARY TABLES中的示例声明本地临时表。但是,当我尝试将其插入sqlplus' CLI并按 Enter 时,它不执行任何操作,除按 Ctrl <之外,我不知道下一步该如何完成命令。 / kbd> + C 中断命令输入:

SQL> DECLARE LOCAL TEMPORARY TABLE suppliers_temp
( supplier_id number(10) NOT NULL,
  supplier_name varchar2(50) NOT NULL,
  contact_name varchar2(50)
);  2    3    4    5
  6
  7  ;
  8  ^C

要执行此查询,我已以 SYSTEM 用户身份登录。

为什么这个例子对我不起作用?

谢谢!

1 个答案:

答案 0 :(得分:4)

local temporary tables在Oracle RDBMS中不是问题。取而代之的是,您可以拥有一个Global Temporary Table (GTT)(它创建一个永久表,但是数据被保存在会话级别),或者在18c中引入,您可以拥有一个Private Temporary Table (PTT)(表的定义和数据被保留。在会话级别)。

两者都类似于标准的create table语句,因此要创建一个GTT在提交时删除行,您可以执行以下操作:

create global temporary table table_name (col1 number, col2 varchar2(20))
   on commit delete rows;