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

Can I declare local temporary table in Oracle 12c

我正在尝试使用 Oracle / PLSQL: LOCAL TEMPORARY TABLES 中的示例声明本地临时 table。但是当我尝试将它插入 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

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

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

local temporary tables 与 Oracle RDBMS 无关。相反,您可以使用 Global Temporary Table (GTT) (which creates a permanent table, but the data is held at session level) or, introduced in 18c, you can have a Private Temporary Table (PTT)(table 定义和数据保存在会话级别)。

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

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