Sdílet prostřednictvím


Vazba relačních dat v rámci dat XML

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Můžete specifikovat XML datové typy (Data Type Methods) pro XML datovou proměnnou nebo sloupec. Například metoda query() (xml datový typ) vykoná specifikovaný XQuery nad XML instancí. Když tímto způsobem konstruujete XML, můžete chtít přinést hodnotu z ne-XML typu sloupce nebo Transact-SQL proměnné. Tento proces se nazývá vazba relačních dat uvnitř XML.

Pro navázání relačních dat mimo XML uvnitř XML poskytuje SQL Server Database Engine následující pseudofunkce:

Tyto funkce můžete použít s metodami XML datových typů vždy, když chcete zobrazit relační hodnotu uvnitř XML.

Tyto funkce nelze použít k odkazování na data ve sloupcích nebo proměnných typu xml, CLR definovaných uživatelem, datetime, smalldatetime, text, ntext, sql_variant a obrazových typů.

Tato vazba je také určena pouze pro čtení. To znamená, že data nelze psát ve sloupcích, které tyto funkce používají. Například sql:variable("@x")="nějaký výraz" není povolen.

Příklad: dotaz přes domény pomocí sql:variable()

Tento příklad ukazuje, jak sql:variable() umožňuje aplikaci parametrizovat dotaz. ISBN je předáváno pomocí SQL proměnné @isbn. Nahrazením konstanty sql:variable() lze dotaz použít k vyhledávání libovolného ISBN, nejen toho, jehož ISBN je 0-7356-1588-2.

DECLARE @isbn VARCHAR(20)  
SET     @isbn = '0-7356-1588-2'  
SELECT  xCol  
FROM    T  
WHERE   xCol.exist ('/book/@ISBN[. = sql:variable("@isbn")]') = 1  

sql:column() lze použít podobným způsobem a přináší další výhody. Indexy nad sloupcem mohou být použity pro efektivitu, jak rozhodne optimalizátor dotazů založený na nákladech. Také může vypočtený sloupec uložit propagovanou vlastnost.

Viz také