Aracılığıyla paylaş


XQuery giriş

XQuery sorgusu, bir giriş ve bir gövdeden oluşur.XQuery giriş, bildirimler ve sorgu işleme için gerekli ortam birlikte oluşturduğunuz tanımları dizisidir.SQL Server'da XQuery giriş ad alanı bildirimi içerebilir.Istenen sorgu sonucu belirttiğiniz ifade bir sıra XQuery gövdesi oluşur.

Aşağıdaki XQuery karşı yönergeleri sütun, belirtilmedi XML türü üretim yönergeleri XML olarak depolar.Sorgu, iş merkezi konumu için Üretim yönergeleri alır. 10. The query() yöntem of the xml data type is used to specify the XQuery.

SELECT Instructions.query('declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";         
    /AWMI:root/AWMI:Location[@LocationID=10]
') AS Result 
FROM  Production.ProductModel
WHERE ProductModelID=7

Önceki sorgudan aşağıdakilere dikkat edin:

  • Bir ad alanı öneki (AWMI) bildirim XQuery giriş içerir (namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";.

  • The declare namespace keyword defines a namespace prefix that is used later in the query body.

  • /AWMI:root/AWMI:Location[@LocationID="10"] Sorgu gövdesi olur.

Ad alanı bildirimleri

Bir ad alanı bildirim bir önek tanımlar ve aşağıdaki sorguda gösterilen ad alanı URI ile ilişkilendirir.Sorguda, CatalogDescription olan bir XML türü sütun.

Bu sütun karşı XQuery belirtme sorgu giriş belirtir. declare namespace önek ilişkilendirmek için bildirim PD, ad alanı URI ile Ürün açıklaması. Bu önek, daha sonra ad alanı URı'SI yerine sorgu gövdesinde kullanılır.Düğümlerin sonuç XML URI ad alanıyla ilişkilendirilmiş ad var.

SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
         /PD:ProductDescription/PD:Summary 
    ') as Result
FROM Production.ProductModel
where ProductModelID=19

Sorgu Okunabilirliği artırmak için , ad alanı öneki ve sorgu giriş ad bağlamasında kullanarak yerine bildirmek WITH XMLNAMESPACES kullanarak bildirebilirsiniz declare namespace.

WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS PD)

SELECT CatalogDescription.query('
         /PD:ProductDescription/PD:Summary 
    ') as Result
FROM Production.ProductModel
where ProductModelID=19

Daha fazla bilgi için bkz: XMLNAMESPACES Namespaces kullanarak ekleme.

Varsayılan ad alanı bildirim

Bir ad alanı önekini kullanarak bildirmek yerine declare namespace bildirim, kullanabileceğiniz declare default element namespace öğe adları için varsayılan bir ad alanı bağlamak için bildirimi. Bu durum, herhangi bir önek belirtin.

Aşağıdaki örnekte, sorgu gövde yol ifadesi bir ad alanı öneki belirtmiyor.Varsayılan olarak, tüm öğe adları, giriş belirtilen varsayılan ad boşluğu ait.

SELECT CatalogDescription.query('
     declare default element namespace  "https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
        /ProductDescription/Summary 
    ') as Result
FROM  Production.ProductModel
WHERE ProductModelID=19 

WITH XMLNAMESPACES kullanarak bir varsayılan ad boşluğu bildirebilirsiniz:

WITH XMLNAMESPACES (DEFAULT 'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription')
SELECT CatalogDescription.query('
        /ProductDescription/Summary 
    ') as Result
FROM  Production.ProductModel
WHERE ProductModelID=19