Oracle 18c,如何在Private临时表中定义BLOB列?

Gre*_*šek 2 oracle blob temp-tables

在Oracle数据库中编写某些过程(使用18c)时,我遇到了一个问题,我试图用BLOB数据类型的列定义PRIVATE临时表,但它没有让我.

PRIVATE创建临时表的代码(还有一些其他列,但我注释掉了每个其他列,除了下一段中提到的那两列):

CREATE PRIVATE TEMPORARY TABLE ora$ptt_Test (
        id NUMBER(19), 
        userdata BLOB);
Run Code Online (Sandbox Code Playgroud)

当我尝试执行上面的语句时,我得到:ORA-14451:不支持的功能,临时表14451. 00000 - "不支持的功能与临时表"*原因:尝试创建IOT,指定物理属性,指定分区或平行条款.*行动:不要这样做.

但如果我评论userdata列,它会成功执行.

我在Oracle 18c文档中找到的所有内容是,创建PRIVATE临时表(自18c以来可用)的限制/约束应该与PUBLIC临时表(在版本18c之前也可用)相同,但事实并非如此,因为我试图用BLOB列定义PUBLIC临时表,并且它有效.

我真的很感激任何帮助.

APC*_*APC 5

我试图用BLOB数据类型的列定义PRIVATE临时表,它没有让我.

对于CLOB和BLOB,这是可重现的.可能它是一个bug但是文档错误而不是实现错误.

关于私有临时表的事情是它们是内存结构,以及会话内存结构.因此,当涉及BLOB时,存在内存管理的复杂性.(略有关联,其中一个原因是ORA-14451 在PDB中创建了PTT并启用了内存中选项.)

另一方面,我们可以在PL/SQL中创建一个BLOB集合,因此在内存结构中争论BLOB没有绝对的障碍.这意味着这可能只是初始实现的限制,将在后续版本中解决.

当然,这些对你没有任何帮助,但除了用Oracle提出一个SR(假设你为一个拥有Oracle支持合同的组织工作)之外,我们没有太多建议.