none
sp_xml_preparedocument com acentuação RRS feed

  • Pergunta

  • Oi pessoal,

     

    Tenho um problema.

    Estou tentando criar uma stored procedure que executa uma inserção em uma tabela.

    Os dados são enviados no formato XML e são tratados pela sp_xml_preparedocument.

     

    O problema é que, quando envio textos com "ç" ou acentuação dá erro de caracteres inválidos.

     

    Alguém já passou por isso e/ou sabe como contornar esse problema?

     

    Valeu,

    Clemilson.

    segunda-feira, 22 de outubro de 2007 16:24

Respostas

  • Clemilson,

     

    Utilize o NVarchar no lugar VarChar!!!

    segunda-feira, 22 de outubro de 2007 16:44
  • Localizei aqui no forum , pode ser que te ajude :

     

    DECLARE @DocHandle int

    DECLARE @XmlDocument nvarchar(4000)

    SET @XmlDocument = N'<ROOT>

    <produtos CODIGO="211" DESCRICAO="LUVA DOMÉSTICA TOP" MARCA="SANRO TOP" ></produtos>

    <produtos CODIGO="213" DESCRICAO="LUVA DOMÉSTICA STANDARD" MARCA="SANRO STANDARD" ></produtos>

    <produtos CODIGO="217" DESCRICAO="L.DOM.PÃO DE AÇÚCAR" MARCA="SANRO TOP" ></produtos>

    <produtos CODIGO="218" DESCRICAO="L.DOMESTICA SOFT" MARCA="SANRO SOFT" ></produtos>

    </ROOT>'

     

    EXEC sp_xml_preparedocument @DocHandle OUTPUT, @XmlDocument

     

    -- Execute a SELECT statement using OPENXML rowset provider.

    SELECT *

    FROM OPENXML (@DocHandle, '/ROOT/produtos',1)

    With (CODIGO VarChar(3),

    DESCRICAO VarChar(50),

    MARCA VARCHAR(20))

     

    Abraço,

     

    Matozim

    segunda-feira, 22 de outubro de 2007 17:04

Todas as Respostas

  • Clemilson,

     

    Você poderia postar a sua stored procedure aqui?

    segunda-feira, 22 de outubro de 2007 16:26
  •  

    CREATE PROCEDURE sp_Update_Fatura

    @XMLDados VarChar(1000),                               /* parâmetro de ENTRADA */
    @Saida          VarChar(500)    OUTPUT,              /* parâmetro de SAÍDA */
    @Saida1        Numeric            OUTPUT               /* parâmetro de SAÍDA */

    AS

    /* Importação dos parâmetros XML para tabela temporária */
    DECLARE @hDocData int
    DECLARE @tblData TABLE(DFData DateTime)

     

    ****** O ERRO OCORRE NESTA LINHA******

    Exec sp_xml_preparedocument @hDocData OUTPUT, @XMLDados  

    *****************************************************

     

    INSERT @tblData SELECT DFObs FROM OPENXML(@hDocData, 'root/Data') WITH (DFObs VarChar(100))

    Exec sp_xml_removedocument @hDocData  


    Insert Into OBSData Select DFObs From @tblData

    GO

    segunda-feira, 22 de outubro de 2007 16:35
  • Clemilson,

     

    Utilize o NVarchar no lugar VarChar!!!

    segunda-feira, 22 de outubro de 2007 16:44
  • Localizei aqui no forum , pode ser que te ajude :

     

    DECLARE @DocHandle int

    DECLARE @XmlDocument nvarchar(4000)

    SET @XmlDocument = N'<ROOT>

    <produtos CODIGO="211" DESCRICAO="LUVA DOMÉSTICA TOP" MARCA="SANRO TOP" ></produtos>

    <produtos CODIGO="213" DESCRICAO="LUVA DOMÉSTICA STANDARD" MARCA="SANRO STANDARD" ></produtos>

    <produtos CODIGO="217" DESCRICAO="L.DOM.PÃO DE AÇÚCAR" MARCA="SANRO TOP" ></produtos>

    <produtos CODIGO="218" DESCRICAO="L.DOMESTICA SOFT" MARCA="SANRO SOFT" ></produtos>

    </ROOT>'

     

    EXEC sp_xml_preparedocument @DocHandle OUTPUT, @XmlDocument

     

    -- Execute a SELECT statement using OPENXML rowset provider.

    SELECT *

    FROM OPENXML (@DocHandle, '/ROOT/produtos',1)

    With (CODIGO VarChar(3),

    DESCRICAO VarChar(50),

    MARCA VARCHAR(20))

     

    Abraço,

     

    Matozim

    segunda-feira, 22 de outubro de 2007 17:04
  • Matozim,

     

    Realmente você encontrou aqui no fórum, por sinal este exemplo eu utilizo aqui na empresa.

     

    Vou cobrar direitos autoriais, pois este exemplo é meu!!!

     

    segunda-feira, 22 de outubro de 2007 17:27
  • Valeu gurizada, funcionou!!

     

     

     

    segunda-feira, 22 de outubro de 2007 17:45
  • Ola Junior,

     

    Ainda bem que disse que encontrei aqui no forum !!!.

     

    Espero que, independente de onde veio e quem é o autor, tenha ajudado o amigo que estava com o problema . certo ?

     

     

    Matozim

     

     

    segunda-feira, 22 de outubro de 2007 17:51
  • Matozin,

     

    Fique a vontade para utilizar qualquer material existente aqui no fórum.

     

    Estava somente brincando, como muitas amigos tem o costume de fazer aqui.

     

    Com certeza o importante é ajudar e solucionar as dúvidas e problemas que os nossos amigos podem ter.

     

    Valeu.

    segunda-feira, 22 de outubro de 2007 17:59
  • É isso aí , Junior...

     

    Estamos todos num mesmo sentido !!!

     

    Valeu...

     

    Abraços

     

    Matozim

    segunda-feira, 22 de outubro de 2007 18:10
  • Matozin,

     

    Certo, isso mesmo.

     

    Até o próximo post.

    segunda-feira, 22 de outubro de 2007 18:14