【问题标题】:SQL xmltype breaks when where clause added添加 where 子句时 SQL xmltype 中断
【发布时间】:2014-02-14 00:48:05
【问题描述】:

我正在尝试在 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 中缺少值。任何指针都会受到欢迎。

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

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

【问题讨论】:

  • 这张表有多少行?您实际上是在获取所有记录吗,包括 ID 为“1”、“2”和“3”的记录而不使用过滤器?
  • 已尝试在 sql*plus 中执行 select ID, xmltype(clobField) as myXmlField from table,我认为 /would/ 会带回所有行。我该如何测试?

标签: sql xml oracle sqlplus oracle-sqldeveloper


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-04-04
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多