我有一个包含 XML 数据的表。不能使用真实姓名。
<properties>
<property>
<string>KEY1</string>
<string>A</string>
</property>
<property>
<string>KEY2</string>
<string>B</string>
</property>
<property>
<string>KEY3</string>
<string>C</string>
</property>
<property>
<string>KEY4</string>
<string>D</string>
</property><properties>
表 - TESTDATA 列 - 数据
我正在尝试以下sql:
select xt.*
from TESTDATA,
xmltable('/properties/property'
passing DATA
columns KEY varchar2(100) PATH 'string[1]',
VALUE varchar2(100) PATH 'string[2]'
) xt
;
我收到以下错误:
ORA-19224: XPTY0004 - XQuery 静态类型不匹配:预期 - node()* 得到 - xs:string 19224. 00000 - “XPTY0004 - XQuery 静态类型不匹配:预期 - %s 得到 - %s” *原因:无法使用表达式,因为它的静态类型不适合使用它的上下文。 *操作:将表达式修复为所需类型或在表达式周围添加适当的转换函数。
请帮忙。
最佳答案
我发现了这个问题。该列是 CLOB。我需要在 SQL 中将其转换为 XMLTYPE - XMLTYPE(DATA)。
谢谢
关于Oracle xmltable ORA-19224 : XPTY0004 - XQuery static type mismatch: expected - node()* got - xs:string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49001007/