【问题标题】:Can I declare local temporary table in Oracle 12c我可以在 Oracle 12c 中声明本地临时表吗
【发布时间】:2019-11-01 03:05:31
【问题描述】:

我正在尝试使用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

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

为什么这个例子不适合我?

【问题讨论】:

  • 我想你会在这里找到答案:community.oracle.com/thread/3714968
  • 不仅 LOCAL TEMPORARY TABLE 在 Oracle 中不是一个东西,这甚至不是有效的 Oracle 语法。所以教学是,这是一个非常重要的教学,互联网上有很多废话。因此,您应该学会使用the Oracle documentation,而不是信任随机网站,即使是在 Google 搜索中排名靠前的网站。

标签: oracle sqlplus oracle12c


【解决方案1】:

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;

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 2011-06-07
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    相关资源
    最近更新 更多