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
Az atomizálás egy elem begépelt értékének kinyerése. Ezt a folyamatot bizonyos körülmények között feltételezik. Az XQuery-operátorok némelyike, például az aritmetikai és összehasonlító operátorok, a folyamattól függenek. Ha például közvetlenül a csomópontokra alkalmazza az aritmetikai operátorokat, a rendszer először a adatfüggvényimplicit meghívásával kéri le a csomópont beírt értékét. Ez operandusként adja át az atomi értéket az aritmetikai operátornak.
Az alábbi lekérdezés például az attribútumok összegét LaborHours adja vissza. Ebben az esetben data() a rendszer implicit módon alkalmazza az attribútumcsomópontokat.
DECLARE @x AS XML;
SET @x = '<ROOT><Location LID="1" SetupTime="1.1" LaborHours="3.3" />
<Location LID="2" SetupTime="1.0" LaborHours="5" />
<Location LID="3" SetupTime="2.1" LaborHours="4" />
</ROOT>';
-- data() implicitly applied to the attribute node sequence.
SELECT @x.query('sum(/ROOT/Location/@LaborHours)');
Bár nem kötelező, a függvényt explicit módon is megadhatja data() :
SELECT @x.query('sum(data(ROOT/Location/@LaborHours))');
Az implicit atomizálásra egy másik példa az aritmetikai operátorok használata. Az + operátor atomi értékeket igényel, és data() implicit módon alkalmazva lesz az attribútum atomi értékének lekérésére LaborHours . A lekérdezés a ProductModel tábla xml- típusának Utasítások oszlopában van megadva. Az alábbi lekérdezés háromszor adja vissza az LaborHours attribútumot. A lekérdezésben fontolja meg a következő szempontokat:
Az attribútum létrehozásakor a rendszer implicit módon alkalmazza a
OriginalLaborHoursatomizálást a függvény által$WC/@LaborHoursvisszaadott egytonos sorozatra. Az attribútum beírt értéke hozzáLaborHoursvan rendelveOriginalLaborHours.Az attribútum létrehozásához az
UpdatedLaborHoursV1aritmetikai operátor atomi értékeket igényel.data()Ezért a rendszer implicit módon alkalmazza aLaborHoursfüggvény által visszaadott$WC/@LaborHoursattribútumra. Ezután hozzáadja az 1 atomértéket. Az attribútumUpdatedLaborHoursV2felépítése a explicit alkalmazásátdata()mutatja, de nem kötelező.
SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
for $WC in /AWMI:root/AWMI:Location[1]
return
<WC OriginalLaborHours = "{ $WC/@LaborHours }"
UpdatedLaborHoursV1 = "{ $WC/@LaborHours + 1 }"
UpdatedLaborHoursV2 = "{ data($WC/@LaborHours) + 1 }" >
</WC>') AS Result
FROM Production.ProductModel
WHERE ProductModelID = 7;
Az eredmény a következő:
<WC OriginalLaborHours="2.5"
UpdatedLaborHoursV1="3.5"
UpdatedLaborHoursV2="3.5" />
A porlasztás egy egyszerű típus, egy üres készlet vagy egy statikus típusú hiba egy példányát eredményezi.
Az atomizálás a függvényeknek átadott összehasonlítókifejezés-paraméterekben, a függvények által visszaadott értékekben, cast() a kifejezésekben és a rendezési kifejezésekben is előfordul.
Kapcsolódó tartalom
- XQuery basics
- összehasonlító kifejezések (XQuery)
- XQuery-függvények xml adattípusú