Oracle XML DB

Exploitation d'une table utilisant des données XML

Exploitation d'une table utilisant des données XML

Question

Récupérer les noms et prénoms de tous les employés.

Indice

Utilisez XMLTABLE.

Indice

Pensez à mettre un alias sur la Table XMLTABLE et récupérer les information via cet alias.

Solution
1
SELECT resultats.*
2
  FROM employes emp,
3
       XMLTABLE ('/employes/employe'
4
                 PASSING emp.donnees
5
                 COLUMNS prenom VARCHAR2(50) PATH 'prenom', 
6
                         nom VARCHAR2(50) PATH 'nom') resultats;

Question

Récupérer les noms et prénoms de tous les employés, ainsi que leur attribut id.

Indice

La requête XPATH pour les attributs id est '@id'.

Solution
1
SELECT resultats.*
2
  FROM employes emp,
3
       XMLTABLE ('/employes/employe'
4
                 PASSING emp.donnees
5
                 COLUMNS id VARCHAR2(50) PATH '@id', 
6
                         prenom VARCHAR2(50) PATH 'prenom', 
7
                         nom VARCHAR2(50) PATH 'nom') resultats;

Question

Récupérer le nom et le salaire des employés gagnant plus de 2500.

Indice

Utilisez la requête XPATH de XMLTABLE.

Solution
1
SELECT resultats.*
2
  FROM employes emp,
3
       XMLTABLE ('/employes/employe[salaire>2500]'
4
                 PASSING emp.donnees
5
                 COLUMNS prenom VARCHAR2(50) PATH 'prenom', 
6
                         nom VARCHAR2(50) PATH 'nom',
7
                         salaire NUMBER PATH 'salaire') resultats;

Question

Récupérer le nom des employés qui ont John pour prénom.

Solution
1
SELECT resultats.*
2
  FROM employes emp,
3
       XMLTABLE ('/employes/employe[prenom="John"]'
4
                 PASSING emp.donnees
5
                 COLUMNS prenom VARCHAR2(50) PATH 'prenom', 
6
                         nom VARCHAR2(50) PATH 'nom') resultats;

Question

Récupérer le nom et le salaire des employés qui gagne plus de 3000 et qui ont John pour prénom.

Indice

Tout se passe dans le XPATH.

Indice

rappel : le "et" dans un prédicat est "and".

Solution
1
SELECT resultats.*
2
  FROM employes emp,
3
       XMLTABLE ('/employes/employe[prenom="John" and salaire>3000]'
4
                 PASSING emp.donnees
5
                 COLUMNS prenom VARCHAR2(50) PATH 'prenom', 
6
                         nom VARCHAR2(50) PATH 'nom',
7
                         salaire NUMBER PATH 'salaire') resultats;
PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Baptiste Montangé, Thomas Coutant, Mohamed Madiou Diallo, 2014-2016 (Contributions : Stéphane Crozat, les étudiants de l'UTC) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)