Last week I I asked Here about how put each XML tag in a column of the database. Now I came across a situation next to it but with a plus, my XML comes from the database, and sometimes it will not come just 1 record, but more than one.
In the following code, the return of the sql that is being set to the variable @xml
returns 60 records, that is 60 different XMLs.
How do I put each XML into a record of my @TabelaTemporaria
?
DECLARE @DataIni DATETIME = '2015-09-07 23:00:00',
@DataFim DATETIME = '2015-09-07 23:59:59',
@xml XML;
DECLARE @TabelaTemporaria TABLE (Identificador VARCHAR(MAX), EstimativaInicio VARCHAR(MAX), EstimativaFim VARCHAR(MAX), IdCliente VARCHAR(MAX), IdEmbarcador VARCHAR(MAX),
CNPJUnidade VARCHAR(MAX), TemperaturaMinima VARCHAR(MAX), TemperaturaMaxima VARCHAR(MAX), Motorista VARCHAR(MAX), Placa VARCHAR(MAX),
FoneMotorista VARCHAR(MAX), Tipo VARCHAR(MAX), Peso VARCHAR(MAX), Valor VARCHAR(MAX), Cubagem VARCHAR(MAX), ViagemPrioritaria VARCHAR(MAX), Id INT,
TripId INT, CreateDateTime DATETIME);
SET @xml = ( SELECT RIGHT(TripXML, LEN(TripXML)-CHARINDEX('?>', TripXML)-1)
FROM AuditDB.dbo.TripsXML (NOLOCK)
WHERE (CreateDateTime BETWEEN @DataIni AND @DataFim)
)
INSERT INTO @TabelaTemporaria (Identificador, EstimativaInicio, EstimativaFim, IdCliente, IdEmbarcador, CNPJUnidade, TemperaturaMinima, TemperaturaMaxima,
Motorista, Placa, FoneMotorista, Tipo, Peso, Valor, Cubagem, ViagemPrioritaria, Id, TripId, CreateDateTime)
SELECT @xml.value('(/Viagem/Identificador/node())[1]', 'nvarchar(max)') AS Identificador,
@xml.value('(/Viagem/EstimativaInicio/node())[1]', 'nvarchar(max)') AS EstimativaInicio,
@xml.value('(/Viagem/EstimativaFim/node())[1]', 'nvarchar(max)') AS EstimativaFim,
@xml.value('(/Viagem/IdCliente/node())[1]', 'nvarchar(max)') AS IdCliente,
@xml.value('(/Viagem/IdEmbarcador/node())[1]', 'nvarchar(max)') AS IdEmbarcador,
@xml.value('(/Viagem/CNPJUnidade/node())[1]', 'nvarchar(max)') AS CNPJUnidade,
@xml.value('(/Viagem/TemperaturaMinima/node())[1]', 'nvarchar(max)') AS TemperaturaMinima,
@xml.value('(/Viagem/TemperaturaMaxima/node())[1]', 'nvarchar(max)') AS TemperaturaMaxima,
@xml.value('(/Viagem/Motorista/node())[1]', 'nvarchar(max)') AS Motorista,
@xml.value('(/Viagem/Placa/node())[1]', 'nvarchar(max)') AS Placa,
@xml.value('(/Viagem/FoneMotorista/node())[1]', 'nvarchar(max)') AS FoneMotorista,
@xml.value('(/Viagem/Tipo/node())[1]', 'nvarchar(max)') AS Tipo,
@xml.value('(/Viagem/Peso/node())[1]', 'nvarchar(max)') AS Peso,
@xml.value('(/Viagem/Valor/node())[1]', 'nvarchar(max)') AS Valor,
@xml.value('(/Viagem/Cubagem/node())[1]', 'nvarchar(max)') AS Cubagem,
@xml.value('(/Viagem/ViagemPrioritaria/node())[1]', 'nvarchar(max)') AS ViagemPrioritaria,
Id,
TripId,
CreateDateTime
FROM AuditDB.dbo.TripsXML (NOLOCK)
WHERE (CreateDateTime BETWEEN @DataIni AND @DataFim)