Consultas de la columna XML incluye un ejemplo de cómo extraer los pares de código y descripción desde un dominio de valor codificado como un conjunto de resultados. Además de la investigación de esquemas simple, una aplicación práctica de esta capacidad es resolver los códigos de un dataset.
En muchos casos, los códigos en un dominio de valor codificado se asignan arbitrariamente; por ejemplo, en un dominio de valor codificado de materiales de tubería, los valores de descripción de dominio pueden ser Cobre, PVC y Acero, pero los códigos de dominio pueden ser 1, 2 y 3, que no son muy utilizados por los usuarios que ejecutan una consulta SQL en una tabla que utiliza el dominio.
Los siguientes ejemplos muestran cómo consultar un dominio de valor codificado en una subconsulta, y después vincular esos resultados con los resultados de la consulta de una tabla que utiliza el dominio.
En el primer ejemplo, la columna de zonificación de la tabla de parcelas (que pertenece al usuario molly) utiliza el dominio ZoningCodes. La tabla de parcelas se vincula con el dominio de valor codificado ZoningCodes para obtener una lista de las descripciones y los códigos de dominio.
--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
En este ejemplo, la columna de materiales de la tabla distribmains utiliza el dominio material. La tabla distribmains se vincula con el dominio de valor codificado material para obtener una lista de las descripciones y los códigos de dominio.
--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;