2
Voici un exemple de TSQL que je voudrais réécrire en PL/SQL.Comment "ouvrir" des données XML dans Oracle
DECLARE @xml XML
SET @xml = '<theRange>
<theRow><First>Bob</First><Last>Smith</Last><Age>30</Age></theRow>
<theRow><First>Sue</First><Last>Jones</Last><Age>34</Age></theRow>
<theRow><First>John</First><Last>Bates</Last><Age>40</Age></theRow>
</theRange>'
;WITH OpenedXML AS (
SELECT r.value('First[1]','varchar(50)') AS First,
r.value('Last[1]','varchar(50)') AS Last,
r.value('Age[1]','int') AS Age
FROM @xml.nodes('//theRange/theRow') AS Row(r)
)
SELECT *
FROM OpenedXML
WHERE Age BETWEEN 30 AND 35
Quelqu'un peut-il me donner une direction ici.
Hi Vincent. C'était un bon lien (+1) mais je n'en sais pas assez pour voir comment les réponses là-bas résolvent mon problème. Il y a deux réponses. L'une est une solution SQL Plus et l'autre est une solution PLSQL mais elle utilise quelque chose appelé XMLTYPE sans donner de réponse complète. Si j'en savais plus, cela aurait probablement résolu ça pour moi. – wcm
@wcm: Je ne connais pas grand chose à propos de SQL Server mais dans cet exemple, le synthax ressemble beaucoup à Oracle. nodes = XMLSequence + extract - value = extraire la valeur –
Vous devez comprendre que MS vole le plus possible d'Oracle: o). Dans TSQL, vous avez tendance à diviser vos solutions en différentes étapes. Il semble que dans Oracle, vous essayez de tout faire en un seul select. Dans mon code, je déclare @xml comme type de données XML, puis je définis la valeur puis j'utilise la valeur dans mon select. Votre code crée le XMLTYPE explicitement dans le corps du select. La solution Oracle est probablement plus efficace mais je pense que le TSQL est plus facile à lire et à comprendre. C'était une excellente réponse. J'aimerais pouvoir vous voter plus d'une fois. – wcm