Oracle 10g: Lecture des valeurs XML à partir de Clob à l'aide de XMLSequence et ExtractValue

Je commence à me sentir un peu faible. J'ai lu beaucoup de pages web et essayé un certain nombre de méthodes pour faire quelque chose qui semble relativement simple.

J'ai un peu de XML stocké une table. La table contient un ID et le code XML dans un CLOB. Quelque chose comme:

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>

J'ai essayé d'utiliser une combinaison de l'extrait et XMLSequence pour créer une Table, puis extractvalue pour obtenir les valeurs spécifiques de Texteerreur, ErrorCode et SupplierErrorText. Mon 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

Le SQL ne retourne pas les erreurs, mais il ne renvoie pas les données.

N'importe qui peut voir ce que je fais mal? Je suis aller sur ce totalement faux? C'est peut-être quelque chose à voir avec la xmlns?

Merci beaucoup d'avance!

OriginalL'auteur HCC | 2012-09-12