2014-10-20 864 views
2

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

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

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

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

select xml.getClobVal() 
from akadmin t where ROWID = 'AAAQc6AAIAAAADDAAA' ; 

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

没有任何人有任何想法?

有关环境的添加信息: Oracle Database 11g企业版版本11.2.0.4.0; PL/SQL开发人员10.0.5.1710

但通过OJDBC6在我们的Java apllication试图与相同的结果

+0

第二部分是因为期限[使这看起来像两件](http://docs.oracle.com/cd/E18283_01/server.112/e17120/general008.htm)和第一部分('xml')无法解决。包含表名/别名使*表示第一部分。其余的,你如何确定你回来的数据类型?你在哪里执行这个,你在哪里看到类型?如果您创建了一个视图(例如)并描述该视图,则所有四列都是“CLOB”。所以真的不知道你在做什么...... – 2014-10-20 13:13:36

+0

我试过这个: 'Select xmlsomething.getClobVal()From(选择xml作为xml的东西来自AKADMIN_v v Where Rowid ='AAAQc6AAIAAAADDAAA');' – 2014-10-20 14:40:19

+0

我尝试了原来的select in PL/SQL Developer的SQL窗口。 PL/SQL Developer [结果网格](http://pichost.me/1916289/) – 2014-10-20 14:48:56

回答

1

你应该把XML中一个括号:

select (xml).getClobVal() from akadmin; 

作品对我来说

+1

它可以工作(但我不明白它...) – 2017-05-26 08:46:53