繁体   English   中英

添加where子句时,SQL xmltype中断

[英]SQL xmltype breaks when where clause added

我正在尝试在SQL Developer(或SQL * plus)中运行查询以选择clob字段(clobField)的一部分。 为此,我首先使用xmltype,然后使用extract()。 但是,当我尝试用where子句将我的第一次选择子集化时,它会中断。

这两个语句成功运行:

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中缺少值。 任何指针都将很受欢迎。

==============================更新================== ==================

这个问题的答案中,我可以使用以下代码使其起作用:

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开发人员的事情。 错误仍然出现

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM