神秘的 getClobVal()

m_a*_*d_m 4 oracle comments clob xmltype

我有一个表(AKADMIN),其中有一个名称为 XML 的 XMLTYPE 列。我想在此列中使用 getClobVal()。

select t.xml.getClobVal() /**/ 
,      t.xml.getClobVal() --
,      t.xml.getClobVal() as clobval
,      t.xml.getClobVal()
from akadmin t where ROWID = 'AAAQc6AAIAAAADDAAA' ;
Run Code Online (Sandbox Code Playgroud)

在结果集中,前 4 列给出 CLOB 类型,但第五列给出 XMLTYPE。我必须在 getClobVal() 之后键入任何注释或别名以更正结果的 (CLOB) 类型。为什么?

另一个问题,当我离开 tablename 的别名时:

select xml.getClobVal()
from akadmin t where ROWID = 'AAAQc6AAIAAAADDAAA' ;
Run Code Online (Sandbox Code Playgroud)

它抛出一个ORA-00904 string: invalid identifier 嗯...

有人有任何想法吗?

新增环境信息:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0;PL/SQL 开发人员 10.0.5.1710

但是在我们的 Java 应用程序中通过 OJDBC6 尝试了这个,结果相同

use*_*876 11

您应该将 xml 放在括号中:

select (xml).getClobVal() from akadmin;
Run Code Online (Sandbox Code Playgroud)

为我工作