Menggunakan XML dalam kolom komputasi

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Instans XML dapat muncul sebagai sumber untuk kolom komputasi, atau sebagai jenis kolom komputasi. Contoh dalam artikel ini memperlihatkan cara menggunakan XML dengan kolom komputasi.

Membuat kolom komputasi dari kolom XML

Dalam pernyataan berikut CREATE TABLE , xml kolom jenis (col2) dihitung dari col1:

CREATE TABLE T ( col1 varchar(max), col2 AS CAST(col1 AS xml) );

Tipe data xml juga dapat muncul sebagai sumber dalam membuat kolom komputasi, seperti yang diperlihatkan dalam pernyataan berikutCREATE TABLE:

CREATE TABLE T ( col1 xml, col2 as cast(col1 as varchar(1000) ));

Anda dapat membuat kolom komputasi dengan mengekstrak nilai dari kolom jenis seperti yang xml diperlihatkan dalam contoh berikut. Karena metode tipe data xml tidak dapat digunakan secara langsung dalam membuat kolom komputasi, contoh pertama-tama menentukan fungsi (my_udf) yang mengembalikan nilai dari instans XML. Fungsi ini membungkus value() metode jenis xml . Nama fungsi kemudian ditentukan dalam CREATE TABLE pernyataan untuk kolom komputasi.

Catatan

Jika Anda ingin membuat kolom komputasi yang dipertahankan berdasarkan fungsi ini, fungsi itu sendiri harus deterministik. Untuk informasi selengkapnya, lihat Fungsi deterministik dan nondeterministik.

CREATE FUNCTION my_udf(@var xml) returns int
AS BEGIN
RETURN @var.value('(/ProductDescription/@ProductModelID)[1]' , 'int')
END;
GO
-- Use the function in CREATE TABLE.
CREATE TABLE T (col1 xml, col2 as dbo.my_udf(col1) );
GO
-- Try adding a row.
INSERT INTO T values('<ProductDescription ProductModelID="1" />');
GO
-- Verify results.
SELECT col2, col1
FROM T;

Seperti dalam contoh sebelumnya, contoh berikut mendefinisikan fungsi untuk mengembalikan instans jenis xml untuk kolom komputasi. Di dalam fungsi, query() metode jenis data xml mengambil nilai dari xml parameter jenis.

CREATE FUNCTION my_udf(@var xml)
  RETURNS xml AS
BEGIN
   RETURN @var.query('ProductDescription/Features')
END;

Dalam pernyataan berikut CREATE TABLE , Col2 adalah kolom komputasi yang menggunakan data XML (<Features> elemen) yang dikembalikan oleh fungsi:

CREATE TABLE T (Col1 xml, Col2 as dbo.my_udf(Col1) );
-- Insert a row in table T.
INSERT INTO T VALUES('
<ProductDescription ProductModelID="1" >
  <Features>
    <Feature1>description</Feature1>
    <Feature2>description</Feature2>
  </Features>
</ProductDescription>');
-- Verify the results.
SELECT *
FROM T;

Baca juga