Tag Archives: for xml

XML – RAW – 01

Dando inicio a uma serie de pequenos artigos sobre XML e suas possiveis variações em SQL Server vou começar falando sobre a mais simples de todas, denominada FOR XML RAW. Nela o SQL Server faz uma formatação padrão nos dados e os joga em um XML simples conforme podemos observar abaixo:

--Criando a tabela com os dados de exemplo
IF(OBJECT_ID('TabelaDadosXML') IS NOT NULL)
	DROP TABLE TabelaDadosXML

CREATE TABLE TabelaDadosXML
(
	Nome		VARCHAR(100),
	SobreNome	VARCHAR(100),
	DataDeNasc	DATETIME
)

--Inserindo dados de teste
INSERT INTO TabelaDadosXML(Nome, SobreNome, DataDeNasc)
VALUES
('Nome01', 'SobreNome01', '19910921'),
('Nome02', 'SobreNome02', '19930909'),
('Nome03', 'SobreNome03', '19931009'),
('Nome04', 'SobreNome04', '19931109'),
('Nome05', 'SobreNome05', '19931209'),
('Nome06', 'SobreNome06', '19850109'),
('Nome07', 'SobreNome07', '19860109'),
('Nome08', 'SobreNome08', '19880109'),
('Nome09', 'SobreNome09', '19980109'),
('Nome10', 'SobreNome10', '19980909')

--RAW
SELECT
	a.Nome,
	a.SobreNome,
	DATEDIFF(YEAR, a.DataDeNasc, GETDATE()) As Idade
FROM TabelaDadosXML a
FOR XML RAW
/*
<row Nome="Nome01" SobreNome="SobreNome01" Idade="22" />
<row Nome="Nome02" SobreNome="SobreNome02" Idade="20" />
<row Nome="Nome03" SobreNome="SobreNome03" Idade="20" />
<row Nome="Nome04" SobreNome="SobreNome04" Idade="20" />
<row Nome="Nome05" SobreNome="SobreNome05" Idade="20" />
<row Nome="Nome06" SobreNome="SobreNome06" Idade="28" />
<row Nome="Nome07" SobreNome="SobreNome07" Idade="27" />
<row Nome="Nome08" SobreNome="SobreNome08" Idade="25" />
<row Nome="Nome09" SobreNome="SobreNome09" Idade="15" />
<row Nome="Nome10" SobreNome="SobreNome10" Idade="15" />
*/

Ou seja, o xml veio sem formatação nenhuma, colocando todos os dados como atribudos de uma TAG chamada ROW
Para se alterar o nome desta tag basta alterar para:

SELECT
	a.Nome,
	a.SobreNome,
	DATEDIFF(YEAR, a.DataDeNasc, GETDATE()) As Idade
FROM TabelaDadosXML a
FOR XML RAW('LinhaDeDados')

Fazendo com que o seguinte output seja gerado

/*
<LinhaDeDados Nome="Nome01" SobreNome="SobreNome01" Idade="22" />
<LinhaDeDados Nome="Nome02" SobreNome="SobreNome02" Idade="20" />
<LinhaDeDados Nome="Nome03" SobreNome="SobreNome03" Idade="20" />
<LinhaDeDados Nome="Nome04" SobreNome="SobreNome04" Idade="20" />
<LinhaDeDados Nome="Nome05" SobreNome="SobreNome05" Idade="20" />
<LinhaDeDados Nome="Nome06" SobreNome="SobreNome06" Idade="28" />
<LinhaDeDados Nome="Nome07" SobreNome="SobreNome07" Idade="27" />
<LinhaDeDados Nome="Nome08" SobreNome="SobreNome08" Idade="25" />
<LinhaDeDados Nome="Nome09" SobreNome="SobreNome09" Idade="15" />
<LinhaDeDados Nome="Nome10" SobreNome="SobreNome10" Idade="15" />
*/