SQL:limit — pole i sql:limit — wartość (SQLXML 4.0)
Procesy XML ładowanie zbiorcze sql:limit-field i sql:limit-value adnotacje na ich definicji. Aby uzyskać więcej informacji zobaczFiltrowanie przy użyciu wartości sql:limit — pole i sql:limit — wartość (SQLXML 4.0).
Na przykład załóżmy, że baza danych zawiera następujące tabele:
Klienta (IDklienta, CompanyName)
Adresy (identyfikator klienta, StreetAddress, AddressType)
Klient może mieć wiele adresów, a każdy adres ma typ adresu skojarzony z nim (na przykład adres wysyłkowy lub adres bilingowy).
Teraz należy wziąć pod uwagę w tym widoku XML z tych tabel realizowane zgodnie z następującymi adnotacjami schematu XSD:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustAddr"
parent="Customer"
parent-key="CustomerID"
child="Address"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Customer" sql:relation="Customer" >
<xsd:complexType>
<xsd:attribute name="CustomerID" type="xsd:int" />
<xsd:attribute name="CompanyName" type="xsd:string" />
<xsd:attribute name="BillTo"
type="xsd:string"
sql:relation="Address"
sql:field="StreetAddress"
sql:limit-field="AddressType"
sql:limit-value="billing"
sql:relationship="CustAddr" >
</xsd:attribute>
<xsd:attribute name="ShipTo"
type="xsd:string"
sql:relation="Address"
sql:field="StreetAddress"
sql:limit-field="AddressType"
sql:limit-value="shipping"
sql:relationship="CustAddr" >
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Po odebraniu ten schemat oraz dane XML, XML ładowanie zbiorcze wstawia wartość, która jest określona dla atrybut BillTo StreetAddress kolumna tabela CustAddress wraz z wartością "rozliczeniowe" kolumna AddressType.
Podobnie XML ładowanie zbiorcze wstawia wartość, która jest określona dla atrybut ShipTo kolumna StreetAddress wraz z wartością "" wysyłki"kolumna AddressType.
Aby testować przykładowe pracy
Zapisz schemat, który znajduje się w tym przykładzie jako SampleSchema.xml.
Utwórz następujące tabele:
CREATE TABLE Customer( CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL) GO CREATE TABLE Address( CustomerID int FOREIGN KEY REFERENCES Customer(CustomerID), StreetAddress varchar(50), AddressType varchar(10)) GONastępujące przykładowe dane można zapisać jako SampleXMLData.xml:
<Customer CustomerID="1111" CompanyName="Sean Chai" City="NY" BillTo="111 Maple (Billing) " ShipTo="111 Maple (Shipping)" /> <Customer CustomerID="1112" CompanyName="Dont Know" City="LA" BillTo="222 Spruce (Billing)" ShipTo="222 Spruce (Shipping)" />Aby XML ładowanie zbiorcze, zapisywania i wykonać tej operacji Microsoft Przykład kodu języka Visual Basic wykonywanie skryptów Edition (VBScript) jako Sample.vbs:
set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0") objBL.ConnectionString = "provider=SQLOLEDB;data source=localhost;database=tempdb;integrated security=SSPI" objBL.ErrorLogFile = "c:\error.log" objBL.XMLFragment = True objBL.CheckConstraints=True objBL.Execute "c:\SampleSchema.xml", "c:\SampleXMLData.xml" set objBL=Nothing
Jest to równoważne schematu XDR:
<?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="Customer" sql:relation="Customer" >
<AttributeType name="CustomerID" />
<AttributeType name="CompanyName" />
<AttributeType name="BillTo" />
<AttributeType name="ShipTo" />
<attribute type="CustomerID" />
<attribute type="CompanyName" />
<attribute type="BillTo"
sql:limit-field="AddressType"
sql:limit-value="billing"
sql:field="StreetAddress"
sql:relation="Address" >
<sql:relationship
key="CustomerID"
key-relation="Customer"
foreign-relation="Address"
foreign-key="CustomerID" />
</attribute>
<attribute type="ShipTo"
sql:limit-field="AddressType"
sql:limit-value="shipping"
sql:field="StreetAddress"
sql:relation="Address" >
<sql:relationship
key="CustomerID"
key-relation="Customer"
foreign-relation="Address"
foreign-key="CustomerID" />
</attribute>
</ElementType>
</Schema>