是否可以在另一个临时表中使用一个临时表? 下面的示例:
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;
答案 0 :(得分:1)
我在Live SQL(livesql.oracle.com)(确实是运行Oracle 19c)上进行了尝试,尽管如此,它可以正常运行,没问题。
但是,您编写的第二个代码不能用作私有临时表名称,应以ora$ptt_
开头,该前缀与您在第一个表中使用的前缀相同。
该前缀由PRIVATE_TEMP_TABLE_PREFIX
初始化参数定义。它的默认值为ora$ptt_
(就像您的第一个CREATE TABLE
语句一样)。由于您很可能没有在这两个命令之间进行更改,因此第二个表也应使用相同的前缀。
答案 1 :(得分:0)
谢谢您的回答,终于我可以在线运行v18的开发服务器了!好吧,事情是,这个简单的示例很好用,问题是当我在带有多个联接的SQL中使用私有临时表时,然后我收到错误:00000-“在并行查询服务器%s中发出错误信号”
*原因:并行查询服务器达到异常条件。
对此进行了搜索,我发现oracle引擎假定使用多个会话,并且可能在一个会话中不存在私有临时表。有什么解决方法吗?我应该禁用此查询的并行执行吗?谢谢!