添加where子句时,SQL xmltype会中断

时间:2014-01-23 12:51:20

标签: sql xml oracle sqlplus oracle-sqldeveloper

我正在尝试在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开发人员的事情。错误仍然存​​在

1 个答案:

答案 0 :(得分:0)

最后,这只是执行前几行的组合。最终,使用createXML方法即xmltype.createXML(clobField)解决了问题。