| Проецирование значений XML-элементов |
Проецирование - выборка значений XML-элементов как отдельных столбцов в SQL-запросе.
Выбрать имена менеджеров для каждого отдела
SELECT department_id,
XMLQUERY('$a//employee[function="MANAGER"]/name'
PASSING xdepartment.employees AS "a")
FROM xdepartment
Функция XMLQUERY очень похожа на XMLEXISTS, но возвращает не true/false, а данные - результат запроса.
Данные, выбираемые в XMLQUERY, имеют тип XML, поэтому иx нельзя использовать в каких-либо операциях, сравнивать и даже преобразовывать в другой тип (функциями преобразования типов или операцией CAST) - даже если применяется text() или data().
Результат:
DEPARTMENT_ID 2
------------- ------------------------------
10 <name>CAROL F. CLARK</name>
12 <name>CHRIS L. ALBERTS</name>
13 <name>JEAN K. DOYLE</name>
14 <name>LESLIE D. BAKER</name>
20 <name>TERRY M. JONES</name>
23 <name>LYNN S. DENNIS</name>
24
30 <name>MARION S. BLAKE</name>
34
43
40
![]() |
![]() |
![]() |