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;