Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Этот пример демонстрирует использование директивы HIDE . Эта директива полезна, если требуется, чтобы запрос возвращал атрибут для упорядочивания строк в универсальной таблице, возвращаемой запросом, но этот атрибут не требуется в итоговом XML-документе.
Этот запрос создает соответствующий XML:
<ProductModel ProdModelID="19" Name="Mountain-100">
<Summary>
<SummaryDescription>
<Summary> element from XML stored in CatalogDescription column
</SummaryDescription>
</Summary>
</ProductModel>
Этот запрос формирует желаемый XML. В запросе задаются две группы столбцов со значениями Tag, равными 1 и 2, в именах столбцов.
В этом запросе используется метод query() (тип данных xml) типа данных xml для выполнения запроса к столбцу CatalogDescription типа xml с целью получения описания итога. В запросе также используется метод value() (тип данных xml) типа данных xml для получения значения ProductModelID из столбца CatalogDescription. Это значение не требуется в результирующем XML- коде, но требуется для сортировки результирующего набора строк. Поэтому имя столбца, [Summary!2!ProductModelID!HIDE], включает директиву HIDE . Если этот столбец не включен в инструкцию SELECT, необходимо отсортировать набор [ProductModel!1!ProdModelID] строк по типу XML и [Summary!2!SummaryDescription]использовать столбец типа XML в ORDER BY. Поэтому добавляется дополнительный [Summary!2!ProductModelID!HIDE] столбец и затем указывается в предложении ORDER BY.
USE AdventureWorks2022;
GO
SELECT 1 as Tag,
0 as Parent,
ProductModelID as [ProductModel!1!ProdModelID],
Name as [ProductModel!1!Name],
NULL as [Summary!2!ProductModelID!hide],
NULL as [Summary!2!SummaryDescription]
FROM Production.ProductModel
WHERE CatalogDescription is not null
UNION ALL
SELECT 2 as Tag,
1 as Parent,
ProductModelID,
Name,
CatalogDescription.value('
declare namespace PD="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
(/PD:ProductDescription/@ProductModelID)[1]', 'int'),
CatalogDescription.query('
declare namespace pd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
/pd:ProductDescription/pd:Summary')
FROM Production.ProductModel
WHERE CatalogDescription is not null
ORDER BY [ProductModel!1!ProdModelID],[Summary!2!ProductModelID!hide]
FOR XML EXPLICIT;
GO
Результат:
<ProductModel ProdModelID="19" Name="Mountain-100">
<Summary>
<SummaryDescription>
<pd:Summary xmlns:pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" xmlns="">
<p1:p xmlns:p1="http://www.w3.org/1999/xhtml">Our top-of-the-line competition mountain bike. Performance-enhancing options include the innovative HL Frame, super-smooth front suspension, and traction for all terrain. </p1:p>
</pd:Summary>
</SummaryDescription>
</Summary>
</ProductModel>