Unterstützung für den nativen DB2-XML-Datentyp in Web-Service-Operationen

Operationen in Web-Services können auf DB2-Spalten verweisen, die den nativen XML-Datentyp verwenden.

Im XML-Schema für die Eingabe- und Ausgabenachrichten der Operation wird der native XML-Datentyp zu xsd:anyType zugeordnet.

Wenn eine XML-Nachricht an einen Web-Service ein INSERT oder UPDATE anfordert, muss der Parametertag ein gültiges XML-Dokument enthalten.

In den Beispielen der folgenden zwei Abschnitte werden Operationen an der Tabelle CUSTOMER der DB2-Datenbank SAMPLE ausgeführt.

Tabelle 1. Die Spalten der Tabelle CUSTOMER
Spaltenname Datentyp
CID BIGINT
INFO XML
HISTORY XML

Nativen DB2-XML-Datentyp in INSERT-Anweisungen verwenden

Das unten aufgeführte Standard-XML-Schema ist für eine Operation, die auf der folgenden SQL-Anweisung basiert:

INSERT INTO CUSTOMER (CID, INFO, HISTORY)
  VALUES (:cid, :info, :history)

Die Spalten INFO und HISTORY enthalten XML-Daten. Die Elemente, die diese Spalten im Schema darstellen, sind fett hervorgehoben:

<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="urn:example" xmlns:tns="urn:example">
	<xsd:element name="insertCustomer">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="cid" type="xsd:long" nillable="true"></xsd:element>
				<xsd:element name="info" type="xsd:anyType" nillable="true"></xsd:element>
				<xsd:element name="history" type="xsd:anyType" nillable="true"></xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="insertCustomerResponse">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="updateCount" type="xsd:int"></xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

Ein Beispiel für eine SOAP/HTTP-Anforderung könnte wie folgt aussehen:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="urn:example">
	<soapenv:Body>
		<q0:insertCustomer>
			<cid>123456</cid>
			<info>
				<customerinfo>
					<name>Amir Malik</name>
					<addr country="United States">
						<street>555 Bailey Ave</street>
						<city>San Jose</city>
						<prov-state>California</prov-state>
						<pcode-zip>95141</pcode-zip>
					</addr>
					<phone type="work">408-555-1358</phone>
				</customerinfo>
			</info>
			<history>
				<customerHistory>
					<numberOrders>12</numberOrders>
					<memberSince>1999</memberSince>
				</customerHistory>
			</history>
		</q0:insertCustomer>
	</soapenv:Body>
</soapenv:Envelope>

Nativen DB2-XML-Datentyp in Abfragen verwenden

Das unten aufgeführte Standard-XML-Schema ist für eine Operation, die auf der folgenden SQL-Anweisung basiert:

SELECT CID, INFO, HISTORY
  FROM CUSTOMER

Wie im vorhergehenden Beispiel enthalten die Spalten INFO und HISTORY XML-Daten. Die Elemente, die diese Spalten im Schema darstellen, sind fett hervorgehoben:

<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="urn:example" xmlns:tns="urn:example">
	<xsd:element name="selectCustomer">
		<xsd:complexType></xsd:complexType>
	</xsd:element>
	<xsd:element name="selectCustomerResponse">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element maxOccurs="unbounded" minOccurs="0" name="row">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="CID" type="xsd:long"></xsd:element>
							<xsd:element name="INFO" type="xsd:anyType" nillable="true"></xsd:element>
							<xsd:element name="HISTORY" type="xsd:anyType" nillable="true"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

Ein Beispiel für eine SOAP/HTTP-Antwort könnte wie folgt aussehen:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="urn:example">
	<soapenv:Body>
		<q0:selectCustomerResponse>
			<row>
				<cid>123456</cid>
				<info>
					<customerinfo>
						<name>Amir Malik</name>
						<addr country="United States">
							<street>555 Bailey Ave</street>
							<city>San Jose</city>
							<prov-state>California</prov-state>
							<pcode-zip>95141</pcode-zip>
						</addr>
						<phone type="work">408-555-1358</phone>
					</customerinfo>
				</info>
				<history>
					<customerHistory>
						<numberOrders>12</numberOrders>
						<memberSince>1999</memberSince>
					</customerHistory>
				</history>
			</row>
		</q0:selectCustomerResponse>
	</soapenv:Body>
</soapenv:Envelope>

Feedback