使用 PL/SQL 将值插入全局临时表

Posted

技术标签:

【中文标题】使用 PL/SQL 将值插入全局临时表【英文标题】:Insert values into global temp table using PL/SQL 【发布时间】:2017-12-13 17:30:29 【问题描述】:

我是 PL/SQL 的新手,我想使用以下代码将值插入到全局临时表中:

CREATE GLOBAL TEMPORARY TABLE test_variable
(
only_datex TIMESTAMP(6) NULL,
only_datey TIMESTAMP(6) NULL
)
ON COMMIT PRESERVE ROWS;
DECLARE
    x TIMESTAMP(6) := CURRENT_DATE;
    y TIMESTAMP(6) := CURRENT_DATE - 1;
BEGIN 
     INSERT INTO test_variable VALUES(x,y);
END

SELECT * FROM test_variable;

尝试选择后,我收到此错误:

【问题讨论】:

【参考方案1】:

您需要终止 pl/sql 块 - 您缺少与 end 和斜线 (/) 一起的分号 (;) 来终止块:

CREATE GLOBAL TEMPORARY TABLE test_variable
(
only_datex TIMESTAMP(6) NULL,
only_datey TIMESTAMP(6) NULL
)
ON COMMIT PRESERVE ROWS;

DECLARE
    x TIMESTAMP(6) := CURRENT_DATE;
    y TIMESTAMP(6) := CURRENT_DATE - 1;
BEGIN 
     INSERT INTO test_variable VALUES(x,y);
END; -- Here
/ 
--^ And here

SELECT * FROM test_variable;

【讨论】:

【参考方案2】:

/ 后面需要一个斜线 END;

DECLARE
    x TIMESTAMP(6) := CURRENT_DATE;
    y TIMESTAMP(6) := CURRENT_DATE - 1;
BEGIN 
     INSERT INTO test_variable VALUES(x,y);
END;/

SELECT * FROM test_variable;

【讨论】:

以上是关于使用 PL/SQL 将值插入全局临时表的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL:如何根据列值插入

如何使用 jdbc oracle 插入和选择全局临时表? [复制]

Oracle:PL/SQL 中查看值是不是存在的最快方法:列表、VARRAY 或临时表

如何将查询结果插入全局临时表?

Oracle 中临时表的替代方案

将值插入记录类型表