Vous pouvez extraire un contenu élémentaire ou une valeur d'attribut à partir d'un ou plusieurs documents XML (recherche dans un document ou dans une collection). L'Extension XML comporte des fonctions d'extraction définies par l'utilisateur que vous pouvez indiquer dans la clause SQL SELECT pour chaque type de données SQL.
L'extraction de contenus élémentaires et de valeurs d'attributs est particulièrement utile lorsque vous développez vos applications car vous pouvez accéder aux données XML en tant que données relationnelles. Par exemple, 1000 documents peuvent être stockés dans la colonne ORDER de la table SALES_TAB. Pour extraire les noms de tous les clients ayant passé commande, utilisez l'instruction SQL ci-après en indiquant la fonction UDF d'extraction dans la clause SELECT :
SELECT extractVarchar(Order, '/Order/Customer/Name') from sales_order_view WHERE price > 2500.00
Dans cet exemple, la fonction UDF d'extraction extrait de la colonne ORDER l'élément <customer> en tant que données de type VARCHAR. Le chemin d'emplacement est /Order/Customer/Name (pour consulter la syntaxe du chemin d'emplacement, reportez-vous à la section Chemin d'emplacement ). Vous pouvez également réduire le nombre de valeurs renvoyées à l'aide d'une clause WHERE pour ne retenir que le contenu de l'élément <customer> associé à un sous-élément <ExtendedPrice> ayant une valeur supérieure à 2500,00.
Pour extraire un contenu élémentaire ou des valeurs d'attributs : Utilisez les fonctions UDF d'extraction répertoriées dans le Tableau 13 en respectant la syntaxe ci-après pour les fonctions scalaires ou les fonctions de table :
extractretrieved_datatype(xmlobj, path)
Où :
Le Tableau 13 répertorie les fonctions d'extraction (fonctions
scalaires et fonctions de table) :
Tableau 13. Fonctions d'extraction de l'Extension XML
Fonction scalaire | Fonction de table | Nom de colonne renvoyé (fonction de table) | Type de données renvoyé |
---|---|---|---|
extractInteger() | extractIntegers() | returnedInteger | INTEGER |
extractSmallint() | extractSmallints() | returnedSmallint | SMALLINT |
extractDouble() | extractDoubles() | returnedDouble | DOUBLE |
extractReal() | extractReals() | returnedReal | REAL |
extractChar() | extractChars() | returnedChar | CHAR |
extractVarchar() | extractVarchars() | returnedVarchar | VARCHAR |
extractCLOB() | extractCLOBs() | returnedCLOB | CLOB |
extractDate() | extractDates() | returnedDate | DATE |
extractTime() | extractTimes() | returnedTime | TIME |
extractTimestamp() | extractTimestamps() | returnedTimestamp | TIMESTAMP |