Arquivo da Categoria ‘SQL’

OpenXML SQL SERVER E XML

Quarta-feira, 28 de Maio, 2008

XML (eXtensible Markup Language) - quem nunca ouviu falar pode parar de programar, xml e uma linguagem que engloba todas as outras, primeiro pela sua versatilidade e segundo pelo seu poder de armazenar e gerenciar dados. SQL Server um ótimo banco de dados mas como nada e perfeito porque não unir o útil ao agradável e conseguir criar uma poderosa ferramenta de dados com XML e SQL SERVER e o que vamos aprender nesse artigo que eu vou mostrar para vocês.
Vamos criar uma procedure que le arquivos xml e grava os dados em uma tabela
primeiramente vamos criar uma tabela simples onde iremos armazenar os dados que vira do xml

PLAIN TEXT
SQL:
  1. CREATE TABLE DADOS_XML (
  2.     ID_DOCUMENTO           INT NOT NULL,
  3.     TX_DADOS       nvarchar(50),
  4.     TX_DESCRICAO nvarchar(50),
  5.     PRIMARY KEY (ID_DOCUMENTO));

bom já temos a tabela, mas agora precisamos de um arquivo xml e de dados para inserirmos na tabela.
para um arquivo xml comum usamos a tag < ?xml version="1.0" enconding="utf-8"?> como cabeçalho de um documento xml mas para o sql server não e necessários usarmos cabeçalho. Bom temos agora o nosso arquivo xml que vamos usar na procedure, Agora somente nos resta montar a procedure para gravar os dados na tabela. comecaremos declarando as variáveis.

PLAIN TEXT
SQL:
  1. DECLARE @ID_DOCUMENTO int
  2. DECLARE @TX_DADOS nvarchar(50)
  3. DECLARE @TX_DESCRICAO nvarchar(50)
  4. --variavel que declara o doc xml, e efetua o retorno
  5. DECLARE @xml_text xml, @i INT
  6. SELECT @xml_text = '<dados_xml><tbl_dados_xml ID_DOCUMENTO = "1" TX_DADOS = "Meu Primeiro exemplo xml SQL SERVER" TX_DESCRICAO = "WordPress xml document"/></dados_xml>'
  7. --Lê o xml usando MSXML parser (Msxml2.dll), funcionalida que veio pela primeira vez no sql 2000
  8. EXEC sp_xml_preparedocument @i OUTPUT, @xml_text
  9. --Pega a primeiro valor do xml dentro da TBL_DADOS_XML que e a tag id_document
  10. SET @ID_DOCUMENTO  = @xml_text.value('(/DADOS_XML/TBL_DADOS_XML/@ID_DOCUMENTO)[1]', 'nvarchar(50)')
  11. --Mesma coisa que a função acima so que pega a tag TX_DADOS, esse [1] quer dizer que so vai pegar o primeiro valor veja bem se o documento for tiver duas tags iguais ou seja mais de um registro a ser inserido no banco ele nao vai pegar, explicarei como fazer isso e um outro artigo
  12. SET @TX_DADOS  = @xml_text.value('(/DADOS_XML/TBL_DADOS_XML/@TX_DADOS)[1]', 'nvarchar(50)')
  13. SET @TX_DESCRICAO = @xml_text.value('(/DADOS_XML/TBL_DADOS_XML/@TX_DESCRICAO)[1]', 'nvarchar(50)')
  14. -- Pega o valores que foram retornado do xml e grava no banco
  15. INSERT INTO DADOS_XML VALUES (@ID_DOCUMENTO, @TX_DADOS, @TX_DESCRICAO)

Por enquanto e só, isso torna uma aplicação muito mais rápida quando você tem que inserir muito registros em várias tabelas ao mesmo tempo. Bom no próximo artigo vamos fazer um exemplo em c#
Rafael Corazzi

Na categoria SQL | 3 Comentários »

  • Categorias

    • C# (1)
    • CAPA (13)
    • Design (2)
    • Fotografia (3)
    • HTML (2)
    • Links positivos (9)
    • PHP (6)
    • Sem categoria (2)
    • Sharepoint (3)
    • SQL (1)
    • VBA (1)
    • Visual basic (1)
  • Posts Recentes

    • Tabela Tipográfica
    • Design de logos 2009
    • Função para Paginação PHP
    • Color Blender
    • Pulseira USB
  • Páginas

    • Acerca

O + criado com WordPress
RSS Artigos e RSS Comentários.