Aracılığıyla paylaş


XQuery önsöz

XQuery sorgu, bir önsöz ve bir gövdeden oluşur.XQuery önsöz, bildirimler ve birlikte sorgu işleme için gerekli ortamı oluşturmak tanımları dizisidir.sql Server XQuery önsöz ad alanı bildirimi içerebilir.XQuery gövde hedeflenen sorgu sonucu belirtin deyimleri dizisi yapılır.

Örneğin, aşağıdaki XQuery karşı yönergeleri sütun belirtilen xml xml olarak üretim yönergeleri saklar türü.İş merkezi konum için üretim yönergeleri sorgu alır 10.The query() method 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 önsöz 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 oluyor.

Ad alanı bildirimi

Bir ad alaný bildirim önek tanımlar ve aşağıdaki sorgu gösterildiği gibi bir ad alanı URI ile ilişkilendirir.Query'de, CatalogDescription olan bir xml türü sütun.

Bu sütun karşı XQuery belirterek, sorgu önsöz belirtir declare namespace bildirim öneki ilişkilendirmek için PD, ürün açıklaması, ad alanı URI.Bu önek, daha sonra sorgu gövde ad alanı URI yerine kullanılır.Sonuç XML ad alanı URI ile ilişkilendirilmiş ad alanında düğümlerdir.

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ý önekini ve ad alaný bildirmek yerine ile xmlnamespaces kullanarak bildirebilirsiniz bağlama kullanarak sorgu önsöz'de 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: İLE xmlnamespaces Namespaces kullanarak ekleme.

Varsayılan ad alanı bildirimi

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

Aşağıdaki örnekte, sorgu gövdesi içinde yol ifade bir ad alaný öneki belirtmiyor.Varsayılan olarak, tüm öğe adlarının önsöz'de belirtilen varsayılan ad alanını aittir.

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 

İLE xmlnamespaces kullanarak varsayýlan bir ad alaný 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