Viva.
Estou a desenvolver uma aplicação que envia dados em formato XML para um Store Procedure para fazer a inserção na base de dados.
Estou a ter problema no formato do XML.
O meu store procedure é o seguinte:
ALTER
PROCEDURE [dbo].[PhoneBookInsert] (
@XMLDoc
NVARCHAR(4000)
)
AS
DECLARE
@XMLHandler int;
EXEC
sp_xml_preparedocument @XMLHandler output, @XMLDoc
IF
@@Error<>0
BEGIN
SELECT -1
RETURN
END
BEGIN
TRANSACTION
INSERT
INTO PhoneBook (
Mobile
,
Phone
,
Fax
,
Email
,
PhoneExtension
)
SELECT
Mobile
,
Phone
,
Fax
,
Email
,
PhoneExtension
FROM
OpenXML(@XMLHandler,'/items/PhoneBook')
WITH
(
Mobile
nvarchar(15) '@Mobile' ,
Phone
nvarchar(15) '@Phone',
Fax
nvarchar(15) '@Fax',
Email
nvarchar(30) '@Email',
PhoneExtension
nvarchar(5) '@PhoneExtension')
IF
@@Error<>0
BEGIN
ROLLBACK TRANSACTION
SELECT -2
RETURN
END
COMMIT
TRANSACTION;
------------
Quando lhe envio como parametro o XML no seguinte formato funciona perfeitamente.
<items>
<PhoneBook
PhoneBookId = "0"
Mobile = "111111111"
Phone = "22222222"
Fax = "33333333"
Email = "44444"
PhoneExtension = "555"/>
</items>'
O problema é quando na minha applicação gero o XML apartir de um Objecto (PhoneBook) e o Formato do XML que obtenho é o seguinte:
<
?xml version="1.0" encoding="utf-16"?>
<
Items>
<PhoneBook">
<PhoneBookId>0</PhoneBookId>
<Mobile>111111111</Mobile>
<Phone>22222222</Phone>
<Fax>33333333</Fax>
<Email>44444</Email>
<PhoneExtension>555</PhoneExtension>
</PhoneBook>
</Items>
Com o XML neste formato o meu Store Procedure não aceita.(Dá Erro)
Eu vejo duas soluções para o meu problema:
1ª - > Na Aplicação gerar o XML no formato Correto.
2ª -> Modificar o Store procedure para aceitar XML segundo formato
O problema é que não sei como implementar nenhuma das soluções.
Assim sendo, se me poderem ajudar nestas soluções ou sugerirem outra forma de implementação, agradecia.
Atencionsamente ,
Rui Figueiredo