Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
A $arg által megadott egyes elemek beírt értékét adja vissza.
Szemantika
fn:data ($arg as item()*) as xdt:untypedAtomic*
Arguments
$arg
Azoknak az elemeknek a sorrendje, amelyek beírt értékeit adja vissza.
Megjegyzések
A gépelt értékekre a következő szempontok vonatkoznak:
Az atomértékek beírt értéke az atomérték.
A szövegcsomópont beírt értéke a szövegcsomópont sztringértéke.
A megjegyzés beírt értéke a megjegyzés sztringértéke.
A feldolgozási utasítás gépelt értéke a feldolgozási utasítás tartalma, a feldolgozási utasítás célneve nélkül.
A dokumentumcsomópont beírt értéke a sztringértéke.
Az attribútum- és elemcsomópontokra az alábbi szempontok vonatkoznak:
Ha egy attribútumcsomópont XML-sématípussal van begépelve, a beírt érték ennek megfelelően a beírt érték.
Ha az attribútumcsomópont nincs begépelve, a gépelt érték megegyezik a sztring értékével, amelyet a program a példányaként
xdt:untypedAtomicad vissza.Ha az elemcsomópont nincs begépelve, a beírt értéke megegyezik a visszaadott
xdt:untypedAtomicsztringértékével.
A gépelt elemcsomópontokra a következő szempontok vonatkoznak:
Ha az elem egyszerű tartalomtípussal rendelkezik,
data()az elem beírt értékét adja vissza.Ha a csomópont összetett típusú, beleértve az xs:anyType típust is,
data()statikus hibát ad vissza.
Bár a data() függvény használata gyakran nem kötelező, ahogy az az alábbi példákban is látható, a függvény megadása kifejezetten növeli a data() lekérdezés olvashatóságát. További információ: XQuery Basics.
Nem adhatja meg data() a létrehozott XML-fájlokat, ahogy az alábbi példában is látható:
DECLARE @x AS XML;
SET @x = '';
SELECT @x.query('data(<SomeNode>value</SomeNode>)');
Példák
Ez a cikk XQuery-példákat tartalmaz az AdventureWorks-adatbázis különböző XML-típusoszlopaiban tárolt XML-példányokra.
A. A data() XQuery függvény használata egy csomópont gépelt értékének kinyeréséhez
Az alábbi lekérdezés bemutatja, hogyan használja a data() függvény egy attribútum, egy elem és egy szöveges csomópont értékeinek lekérésére:
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS p1, 'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)
SELECT CatalogDescription.query(N'
for $pd in //p1:ProductDescription
return
<Root
ProductID = "{ data( ($pd//@ProductModelID)[1] ) }"
Feature = "{ data( ($pd/p1:Features/wm:Warranty/wm:Description)[1] ) }" >
</Root>
') AS Result
FROM Production.ProductModel
WHERE ProductModelID = 19;
Az eredmény a következő:
<Root ProductID="19" Feature="parts and labor"/>
Ahogy már említettük, a data() függvény nem kötelező attribútumok létrehozásakor. Ha nem adja meg a függvényt data() , azt implicit módon feltételezzük. A következő lekérdezés ugyanazokat az eredményeket hozza létre, mint az előző lekérdezés:
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS p1, 'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)
SELECT CatalogDescription.query('
for $pd in //p1:ProductDescription
return
<Root
ProductID = "{ ($pd/@ProductModelID)[1] }"
Feature = "{ ($pd/p1:Features/wm:Warranty/wm:Description)[1] }" >
</Root>
') AS Result
FROM Production.ProductModel
WHERE ProductModelID = 19;
Az alábbi példák azokat a példányokat szemléltetik, amelyekben a data() függvény szükséges.
Az alábbi lekérdezésben $pd/p1:Specifications/Material az <Material> elemet adja vissza. Emellett a data($pd/p1:Specifications/ Material) karakteradatokat a következőképpen adja xdt:untypedAtomicvissza, mert <Material> nincs begépelve. Ha a bemenet nincs begépelve, az eredmény data() a következőképpen lesz begépelve xdt:untypedAtomic: .
SELECT CatalogDescription.query('
declare namespace p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
for $pd in //p1:ProductDescription
return
<Root>
{ $pd/p1:Specifications/Material }
{ data($pd/p1:Specifications/Material) }
</Root>
') AS Result
FROM Production.ProductModel
WHERE ProductModelID = 19;
Az eredmény a következő:
<Root>
<Material>Aluminum Alloy</Material>Aluminum Alloy
</Root>
A következő lekérdezésben data($pd/p1:Features/wm:Warranty) statikus hibát ad vissza, mert <Warranty> összetett típuselem.
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS p1, 'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)
SELECT CatalogDescription.query('
<Root>
{ /p1:ProductDescription/p1:Features/wm:Warranty }
{ data(/p1:ProductDescription/p1:Features/wm:Warranty) }
</Root>
') AS Result
FROM Production.ProductModel
WHERE ProductModelID = 23;