我正在尝试在SQL Developer(或SQL * plus)中运行查询以选择clob字段的一部分(clobField)。为此,我首先使用xmltype然后使用extract()。但是,当我尝试使用where clase对第一个select进行子集时,它会中断。
这两个语句成功运行:
select ID
from table
where ID in ('1','2','3')
select ID, xmltype(clobField) as myXmlField
from table
但是这个没有:
select ID, xmltype(clobField) as myXmlField
from table
where ID in ('1','2','3')
产生的错误是:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line "SYS.XMLTYPE", line 271
ORA-06512: at line 1
06502. 00000 - "PL/SQL: numeric or value error%s"
从这个开始我假设myXmlField被初始化为错误的类型并且正在被喂食它不期望的东西。注: clobField中缺少值。任何指针都会很受欢迎。
===============================更新=============== =====================
从答案this question我可以使用此代码使其工作:
select ID, xmltype.createXML(clobField) as myXmlField
from table
where ID in ('1','2','3')
然而,这并没有解决为什么
的神秘面纱select ID, xmltype(clobField) as myXmlField
from table
工作但不是在添加where子句时!我现在也使用SQL * plus运行语句来检查这是否是SQL开发人员的事情。错误仍然存在
答案 0 :(得分:0)
最后,这只是执行前几行的组合。最终,使用createXML方法即xmltype.createXML(clobField)
解决了问题。