0

在 Oracle18 中是否可以在另一个临时表中使用临时表?下面的例子:

CREATE PRIVATE TEMPORARY TABLE ora$ptt_today_sales 
ON COMMIT PRESERVE DEFINITION
AS
SELECT * FROM orders WHERE order_date = SYSDATE;


CREATE PRIVATE TEMPORARY TABLE ora$information 
ON COMMIT PRESERVE DEFINITION
AS
SELECT * FROM ora$ptt_today_sales WHERE customerID=5;
4

1 回答 1

1

我在 Live SQL (livesql.oracle.com) 上尝试了它(它 - 真的 - 运行 Oracle 19c),而且,尽管如此,它工作正常,没问题。

但是,您编写的第二个代码不能用作私有临时表名,该名称应以 开头ora$ptt_,与您用于第一个表的前缀相同。

该前缀由PRIVATE_TEMP_TABLE_PREFIX初始化参数定义。它的默认值为ora$ptt_(就像在您的第一个CREATE TABLE语句中一样)。由于您很可能没有在这两个命令之间更改它,因此也对第二个表使用相同的前缀。

于 2019-05-06T17:14:51.063 回答