Запросы столбца XML содержит примеры извлечения кода и пар описаний из домена кодированных значений в набор результатов. Помимо простого исследования схем данную возможность на практике применяют для разрешения кодов набора данных.
Во многих случаях коды из домена кодированных значений назначаются произвольно. Например, в домене кодированных значений материалов труб описания могут иметь значения "Медь", "ПВХ" или "Сталь", но в домене будут использоваться коды 1, 2 и 3, которые будут не очень полезны для пользователей, направляющих запрос SQL в таблицу, использующую этот домен.
В приведенных далее примерах показано, как запрашивать домен кодированных значений в подчиненном запросе, а затем объединять эти результы с результатами запроса таблицы, использующей домен.
В первом примере столбец зонирования таблицы участков (принадлежит пользователю molly) использует домен ZoningCodes. Таблица участков объединяется с доменом кодированных значений ZoningCodes для возврата списка кодов домена и описаний.
--SQL Server
SELECT OBJECTID AS "Object ID",Value AS "Zoning Code"
FROM molly.parcels LEFT OUTER JOIN
(SELECT
codedValue.value('Code[1]','nvarchar(max)') AS "Code",
codedValue.value('Name[1]', 'nvarchar(max)') AS "Value"
FROM GDB_ITEMS AS items INNER JOIN GDB_ITEMTYPES AS itemtypes
ON items.Type = itemtypes.UUID
CROSS APPLY items.Definition.nodes
('/GPCodedValueDomain2/CodedValues/CodedValue') AS CodedValues(codedValue)
WHERE itemtypes.Name = 'Coded Value Domain'
AND items.Name = 'ZoningCodes') AS CodedValues
ON molly.parcels.zoning = CodedValues.Code
В этом примере столбец материалов таблицы distribmains использует домен material. Таблица distribmains объединяется с доменом кодированных значений material для возврата списка кодов домена и описаний.
--Oracle
SELECT OBJECTID AS "Object ID", Value AS "Material"
FROM DISTRIBMAINS LEFT OUTER JOIN
(SELECT
EXTRACTVALUE(CodedValues.COLUMN_VALUE, 'CodedValue/Code') AS Code,
EXTRACTVALUE(CodedValues.COLUMN_VALUE, 'CodedValue/Name') AS Value
FROM SDE.GDB_ITEMS_VW items INNER JOIN SDE.GDB_ITEMTYPES itemtypes
ON items.Type = itemtypes.UUID,
TABLE(XMLSEQUENCE(XMLType(Definition).Extract
('/GPCodedValueDomain2/CodedValues/CodedValue'))) CodedValues
WHERE itemtypes.Name = 'Coded Value Domain'
AND items.Name = 'Material') CodedValues
ON DISTRIBMAINS.MATERIAL = CodedValues.Code;