Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

SerraVentura

XML vs Estrutura de Dados

Recommended Posts

Estou na seguinte situação:

 

Tenho o seguinte XML q vem da aplicação:

 

<Entradas>

<Entrada observacao="dasdasdasd" valor="1000">

<Bens>

<Outros>

<Item bem="Outros" idBem="1" descricao="dasdasdasdasdasd" valor="424.234,00"/>

</Outros>

<Veiculos>

<Item bem="Veículo" idBem="2" marca="ihiuh" modelo="iuhui" />

</Veiculos>

<Imoveis>

<Item bem="Imóvel" idBem="3" proprietario="fsdfsdfsdfsdf" localizacao="sxdfasdfsdfsdf" />

<Item bem="Imóvel" idBem="3" proprietario="fsdfsdfsdfsdf" localizacao="sxdfasdfsdfsdf" />

</Imoveis>

</Bens>

</Entrada>

</Entradas>

dentro da minha procedure separo essa estrutura em 4 tabelas diferentes:

 

#EscopoEntrada

#EscopoOutros

#EscopoVeiculos

#EscopoImoveis

 

vou dar o exemplo de como montei uma dessas tabelas, esse exemplo serve pras outras...

 

Exec sp_xml_preparedocument @idVei OUTPUT, @ds_XML_Entrada
   Select bem, idBem, marca, modelo

	 Into #EscopoVeiculos
   From
   OpenXml (@idVei, '/Entradas/Entrada/Bens/Veiculos/Item')
   With(
  bem		   Varchar(50),
	 idBem		 Int,
	 marca		 Varchar(50),
	 modelo		Varchar(50)
 )
   Exec sp_xml_removedocument @idVei

ate ai td bem, tow tendo problema com a estrutura de dados na hora de inserir esses dados...

Bem{

idBem IDENTITY

dtcadastro

}

 

Bem_Veiculo{

idBem

marca

modelo

etc...

}

 

Bem_Imovel{

idBem

nmproprietario

dslocalizacao

etc...

}

 

Bem_Outros{

idBem

dsoutros

etc...

}

 

reparem na estrutura...

o meu problema é como eu vou recuperar o idBem q é gerado na tabela Bem em cada insert

pra depois utiliza-lo na inserção das tabelas filhas ?

 

por exemplo:

 

Insert Bem (dt_Cadastramento)
Select GetDate() From #EscopoOutros

como eu iria recuperar o idBem gerado na tabela Bem pra usar nas filhas, já q minha tabela temporaria poderia ter N registros ?

 

sacaram ? é um insert em "massa", nuam sei como eu poderia utilizar o @@identity para recuperar esses IDs, se alguém tiver alguma idéia, algum exemplo agradeço...

 

vlw galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma forma seria usar um cursor e inserir um a um, com isso conseguiria recuperar o ID, exemplo de cursor: http://forum.imasters.com.br/index.php?showtopic=224865, outra forma seria desabilitar o identity e usar o próprio ID que está no XML, podes desabilitar o identity somente nessa proc que faz o insert, aqui tem um exemplo para desabilitar o identity: http://forum.imasters.com.br/index.php?showtopic=224854

 

t+

http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.