我开始觉得有些昏暗。我已经阅读了很多网页并尝试了许多方法来做一些看起来相对简单的事情。
我有一些 XML 存储了一个表。该表在 CLOB 中包含一个 ID 和 XML。就像是:
ID = 1
<?xml version="1.0" encoding="UTF-8" ?>
<CricketGame xmlns="http://www.somewhere.com/cricket/2002/09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="2002A" xsi:type="CricketGame" >
<TeamInfo TeamId="WestCountry" />
<SessionInfo SessionId="XhRya5m999988888" RestartSession="false" />
<Errors>
<Error ErrorText="Generic Error" ErrorCode="700" SupplierErrorText="Connection: DECLINED" />
<Error ErrorText="Generic Error" ErrorCode="701" SupplierErrorText="Account Error" />
</Errors>
</CricketGame>
我一直在尝试使用 extract 和 XMLSequence 的组合来创建一个表,然后 extractvalue 从 ErrorText、ErrorCode 和 SupplierErrorText 中获取特定值。我的 SQL:
SELECT
extractvalue(value(p), '/Error/@ErrorText') as errText,
extractvalue(value(p), '/Error/@ErrorCode') as errCode,
extractvalue(value(p), '/Error/@SupplierErrorText') as supErrText
FROM gamestable s,
Table(
XMLSequence(
extract(xmltype(s.xml), '/CricketGame/Errors/Error')
)
) p
where
s.gameID = 1
SQL 不返回任何错误,但也不返回数据。
谁能看到我做错了什么?我完全错了吗?这可能与xmlns有关吗?
提前谢谢了!