【发布时间】: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