Suporte para o Tipo de Dados XML Nativo do DB2 em Operações de Serviços da Web

As operações em serviços da Web podem se referir às colunas do DB2 que utilizam o tipo de dados XML nativo.

No esquema XML para as mensagens de entrada e de saída da operação, o tipo de dados XML nativo é mapeado para xsd:anyType.

Em uma mensagem XML para um serviço da Web é solicitado INSERT ou UPDATE, a tag de parâmetro deve conter um documento XML válido.

Os exemplos nas duas seções a seguir desempenham operações na tabela CUSTOMER do banco de dados DB2 SAMPLE.

Tabela 1. As colunas da tabela CUSTOMER
Nome da coluna Tipo de Dados
CID BIGINT
INFO XML
HISTORY XML

Utilizando o Tipo de Dados XML Nativo do DB2 em Instruções INSERT

O esquema XML padrão a seguir destina-se a uma operação baseada na seguinte instrução SQL:

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

As colunas INFO e HISTORY contêm dados XML. Os elementos que representam essas colunas no esquema são destacados em negrito:

<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>

Um pedido SOAP/HTTP pode ser semelhante a este exemplo:

<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>

Utilizando o Tipo de Dados XML Nativo do DB2 em Consultas

O esquema XML padrão a seguir destina-se a uma operação baseada na seguinte instrução SQL:

SELECT CID, INFO, HISTORY
  FROM CUSTOMER

Como no exemplo anterior, as colunas INFO e HISTORY contêm dados XML. Os elementos que representam essas colunas no esquema são destacados em negrito:

<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>

Uma resposta SOAP/HTTP pode ser semelhante a este exemplo:

<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>
Tarefas relacionadas
Desenvolvendo e Implementando Serviços da Web
Referências relacionadas
Protocolos de Mensagens Suportados
Servidores da Web, Mecanismos SOAP e Bancos de Dados Suportados

Feedback