Konversi Jenis Data dan anotasi sql:datatype (SQLXML 4.0)
Berlaku untuk:Database SQL ServerAzure SQL
Dalam skema XSD, atribut xsd:type menentukan jenis data XSD dari elemen atau atribut. Ketika skema XSD digunakan untuk mengekstrak data dari database, jenis data yang ditentukan digunakan untuk memformat data.
Selain menentukan jenis XSD dalam skema, Anda juga dapat menentukan jenis data Microsoft SQL Server dengan menggunakan anotasi sql:datatype. Atribut xsd:type dan sql:datatype mengontrol pemetaan antara jenis data XSD dan jenis data SQL Server.
Atribut xsd:type
Anda dapat menggunakan atribut xsd:type untuk menentukan jenis data XML dari atribut atau elemen yang memetakan ke kolom. xsd:type memengaruhi dokumen yang dikembalikan dari server dan juga kueri JalurX yang dijalankan. Saat kueri JalurX dijalankan terhadap skema pemetaan yang berisi xsd:type, XPath menggunakan jenis data yang ditentukan saat memproses kueri. Untuk informasi selengkapnya tentang cara XPath menggunakan xsd:type, lihat Memetakan Jenis Data XSD ke Jenis Data JalurX (SQLXML 4.0).
Dalam dokumen yang dikembalikan, semua SQL Server jenis data dikonversi menjadi representasi string. Beberapa jenis data memerlukan konversi tambahan. Tabel berikut mencantumkan konversi yang digunakan untuk berbagai nilai xsd:type .
Jenis data XSD | konversi SQL Server |
---|---|
Boolean | CONVERT(bit, COLUMN) |
Tanggal | LEFT(CONVERT(nvarchar(4000), COLUMN, 126), 10) |
decimal | CONVERT(money, COLUMN) |
id/idref/idrefs | id-prefix + CONVERT(nvarchar(4000), COLUMN, 126) |
nmtoken/nmtokens | id-prefix + CONVERT(nvarchar(4000), COLUMN, 126) |
Waktu | SUBSTRING(CONVERT(nvarchar(4000), COLUMN, 126), 1+CHARINDEX(N'T', CONVERT(nvarchar(4000), COLUMN, 126)), 24) |
Semua lainnya | Tidak ada konversi tambahan |
Catatan
Beberapa nilai yang dikembalikan oleh SQL Server mungkin tidak kompatibel dengan jenis data XML yang ditentukan dengan menggunakan xsd:type, baik karena konversi tidak dimungkinkan (misalnya, mengonversi "XYZ" ke jenis data desimal) atau karena nilai melebihi rentang tipe data tersebut (misalnya, -100000 dikonversi ke jenis UnsignedShort XSD). Konversi jenis yang tidak kompatibel dapat mengakibatkan dokumen XML yang tidak valid, atau dalam kesalahan SQL Server.
Pemetaan dari Jenis Data SQL Server ke Jenis Data XSD
Tabel berikut ini memperlihatkan pemetaan yang jelas dari SQL Server jenis data ke jenis data XSD. Jika Anda mengetahui jenis SQL Server, tabel ini menyediakan jenis XSD terkait yang dapat Anda tentukan dalam skema XSD.
Tipe data SQL Server | Jenis data XSD |
---|---|
bigint | panjang |
binary | base64Binary |
bit | boolean |
char | string |
datetime | tanggalWaktu |
desimal | desimal |
Float | double |
gambar | base64Binary |
int | int |
money | desimal |
nchar | string |
ntext | string |
nvarchar | string |
numerik | desimal |
nyata | Float |
smalldatetime | tanggalWaktu |
smallint | pendek |
smallmoney | desimal |
aql_variant | string |
nama sysname | string |
teks | string |
timestamp | tanggalWaktu |
tinyint | unsignedByte |
varbinary | base64Binary |
varchar | string |
uniqueidentifier | string |
sql:datatype Anotasi
Anotasi sql:datatype digunakan untuk menentukan jenis data SQL Server; anotasi ini harus ditentukan ketika:
Anda memuat secara massal ke kolom dateTime SQL Server dari tanggalWaktu, tanggal, atau jenis waktu XSD. Dalam hal ini, Anda harus mengidentifikasi jenis data kolom SQL Server dengan menggunakan sql:datatype="dateTime". Aturan ini juga berlaku untuk updategram.
Anda memuat secara massal ke dalam kolom jenis pengidentifikasi unik SQL Server dan nilai XSD adalah GUID yang menyertakan kurung kurawal ({ dan }). Saat Anda menentukan sql:datatype="uniqueidentifier", kurung kurawal dihapus dari nilai sebelum dimasukkan ke dalam kolom. Jika sql:datatype tidak ditentukan, nilai dikirim dengan kurung kurawal, dan penyisipan atau pembaruan gagal.
Jenis data XML base64Binary memetakan berbagai jenis data SQL Server (biner, gambar, atau varbinary). Untuk memetakan tipe data XML base64Binary ke jenis data SQL Server tertentu, gunakan anotasi sql:datatype. Anotasi ini menentukan jenis data SQL Server eksplisit kolom tempat atribut dipetakan. Ini berguna ketika data disimpan dalam database. Dengan menentukan anotasi sql:datatype, Anda dapat mengidentifikasi jenis data SQL Server eksplisit.
Umumnya disarankan agar Anda menentukan sql:datatype dalam skema.
Contoh
Untuk membuat sampel kerja menggunakan contoh berikut, Anda harus memenuhi persyaratan tertentu. Untuk informasi selengkapnya, lihat Persyaratan untuk Menjalankan Contoh SQLXML.
J. Menentukan xsd:type
Contoh ini menunjukkan bagaimana jenis tanggal XSD yang ditentukan dengan menggunakan atribut xsd:type dalam skema memengaruhi dokumen XML yang dihasilkan. Skema ini menyediakan tampilan XML tabel Sales.SalesOrderHeader dalam database AdventureWorks.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Order" sql:relation="Sales.SalesOrderHeader">
<xsd:complexType>
<xsd:attribute name="SalesOrderID" type="xsd:string" />
<xsd:attribute name="CustomerID" type="xsd:string" />
<xsd:attribute name="OrderDate" type="xsd:date" />
<xsd:attribute name="DueDate" />
<xsd:attribute name="ShipDate" type="xsd:time" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Dalam skema XSD ini, ada tiga atribut yang mengembalikan nilai tanggal dari SQL Server. Saat skema:
Menentukan xsd:type=date pada atribut OrderDate, bagian tanggal dari nilai yang dikembalikan oleh SQL Server untuk atribut OrderDate ditampilkan.
Menentukan xsd:type=time pada atribut ShipDate, bagian waktu dari nilai yang dikembalikan oleh SQL Server untuk atribut ShipDate ditampilkan.
Tidak menentukan xsd:type pada atribut DueDate, nilai yang sama yang dikembalikan oleh SQL Server ditampilkan.
Untuk menguji sampel kueri JalurX terhadap skema
Salin kode skema di atas dan tempelkan ke dalam file teks. Simpan file sebagai xsdType.xml.
Salin templat berikut dan tempelkan ke dalam file teks. Simpan file sebagai xsdTypeT.xml di direktori yang sama tempat Anda menyimpan xsdType.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="xsdType.xml"> /Order </sql:xpath-query> </ROOT>
Jalur direktori yang ditentukan untuk skema pemetaan (xsdType.xml) relatif terhadap direktori tempat templat disimpan. Jalur absolut juga dapat ditentukan, misalnya:
mapping-schema="C:\SqlXmlTest\xsdType.xml"
Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.
Berikut adalah tataan hasil parsial:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="43659"
CustomerID="676"
OrderDate="2001-07-01"
DueDate="2001-07-13T00:00:00"
ShipDate="00:00:00" />
<Order SalesOrderID="43660"
CustomerID="117"
OrderDate="2001-07-01"
DueDate="2001-07-13T00:00:00"
ShipDate="00:00:00" />
...
</ROOT>
Ini adalah skema XDR yang setara:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Order" sql:relation="Sales.SalesOrderHeader">
<AttributeType name="SalesOrderID" />
<AttributeType name="CustomerID" />
<AttributeType name="OrderDate" dt:type="date" />
<AttributeType name="DueDate" />
<AttributeType name="ShipDate" dt:type="time" />
<attribute type="SalesOrderID" sql:field="OrderID" />
<attribute type="CustomerID" sql:field="CustomerID" />
<attribute type="OrderDate" sql:field="OrderDate" />
<attribute type="DueDate" sql:field="DueDate" />
<attribute type="ShipDate" sql:field="ShipDate" />
</ElementType>
</Schema>
B. Menentukan jenis data SQL menggunakan sql:datatype
Untuk sampel yang berfungsi, lihat Contoh G dalam Contoh Pemuatan Massal XML (SQLXML 4.0). Dalam contoh ini, nilai GUID termasuk "{" dan "}" dimuat secara massal. Skema dalam contoh ini menentukan sql:datatype untuk mengidentifikasi jenis data SQL Server sebagai pengidentifikasi unik. Contoh ini menggambarkan kapan sql:datatype harus ditentukan dalam skema.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk