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

Gry*_*ryu 0 oracle sqlplus oracle12c

我正在尝试使用Oracle / PLSQL 中的示例声明本地临时表: LOCAL TEMPORARY TABLES。但是,当我尝试将其插入sqlplus' CLI并点击时Enter,它不执行任何操作,除了按下Ctrl+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
Run Code Online (Sandbox Code Playgroud)

为了执行这个查询,我以SYSTEM用户身份登录。

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

Bon*_*ist 5

local temporary tables不是 Oracle RDBMS 中的东西。相反,您可以拥有一个全局临时表 (GTT)(它创建一个永久表,但数据保存在会话级别),或者,在 18c 中引入,您可以拥有一个私有临时表 (PTT)(表定义和数据在会议级别举行)。

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

create global temporary table table_name (col1 number, col2 varchar2(20))
   on commit delete rows;
Run Code Online (Sandbox Code Playgroud)