Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Atomisasi adalah proses mengekstrak nilai item yang diekstrak. Proses ini tersirat dalam keadaan tertentu. Beberapa operator XQuery, seperti operator aritmatika dan perbandingan, bergantung pada proses ini. Misalnya, ketika Anda menerapkan operator aritmetika langsung ke simpul, nilai node yang diketik pertama kali diambil dengan secara implisit memanggil fungsi data. Ini meneruskan nilai atom sebagai operand ke operator aritmatika.
Misalnya, kueri berikut mengembalikan total LaborHours atribut. Dalam hal ini, data() secara implisit diterapkan ke simpul atribut.
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)');
Meskipun tidak diperlukan, Anda juga dapat secara eksplisit menentukan data() fungsi:
SELECT @x.query('sum(data(ROOT/Location/@LaborHours))');
Contoh lain dari atomisasi implisit adalah ketika Anda menggunakan operator aritmatika. Operator + memerlukan nilai atomik, dan data() secara implisit diterapkan untuk mengambil nilai LaborHours atom atribut. Kueri ditentukan terhadap kolom Instruksi jenis xml dalam tabel ProductModel. Kueri berikut mengembalikan LaborHours atribut tiga kali. Dalam kueri, pertimbangkan:
Dalam membangun
OriginalLaborHoursatribut, atomisasi secara implisit diterapkan ke urutan singleton yang dikembalikan oleh$WC/@LaborHours. Nilai atribut yangLaborHoursditik ditetapkan keOriginalLaborHours.Dalam membuat
UpdatedLaborHoursV1atribut, operator aritmatika memerlukan nilai atom. Oleh karena itu,data()secara implisit diterapkan ke atribut yangLaborHoursdikembalikan oleh$WC/@LaborHours. Nilai atom 1 kemudian ditambahkan ke dalamnya. Konstruksi atributUpdatedLaborHoursV2menunjukkan aplikasi eksplisit ,data()tetapi tidak diperlukan.
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;
Berikut hasilnya:
<WC OriginalLaborHours="2.5"
UpdatedLaborHoursV1="3.5"
UpdatedLaborHoursV2="3.5" />
Atomisasi menghasilkan instans jenis sederhana, set kosong, atau kesalahan jenis statis.
Atomisasi juga terjadi dalam parameter ekspresi perbandingan yang diteruskan ke fungsi, nilai yang dikembalikan oleh fungsi, cast() ekspresi, dan ekspresi pengurutan yang diteruskan dalam urutan berdasarkan klausa.