Na verdade, cfrme http://www.oracle.com/technetwork/articles/wang-whitespace-092897.html?ssSourceSiteId=otnjp , afaik o default já é Preservar o espaço, tal como citado no parágrafo :
"Based on the W3C XML specification, the Oracle XML Developer's Kit (XDK) XML parsers, by default, preserves all whitespace. Therefore" Então pra mim é bug .... Vc até pode, como Workaround, setar manualmente o parâmetro, mas valeria a pena uma checada no metalink (o site de Suporte da Oracle) pra ver se há bug aberto/reconhecido sobre isso ... Eu tinha perguntado sobre SOs e métodos de carga pensando, como tinha dito, em eventuais diferenças de FTP, caracteres de fim de linha e quetais , mas olhando no seu exemplo onde vc mostra que a issue se reproduz até fazendo o INSERT diretamente, não cabe mais a suposição... Vou, assim que conseguir reunir um tempinho, tentar reproduzir o seu exemplo no database 10.2.0.5 EE que tenho em casa : ele é Windows mas pelo que vc descreve, não deve ter nada a ver com SO, se for bug é bug geral.... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "Lucas Rombaldi" <lucas@...> escreveu > > Boa Tarde, > > Até então não havia feito testes utilizando o xml:space="preserve" conforme > foi comentado. Com a utilização deste atributo, o erro foi resolvido. Esta > seria a melhor maneira para resolver este problema? > > De qualquer forma, seguem informações solicitadas: > 11g > Oracle Database 11g Express Edition 11.2.0.2.0 > Servidor Windows Vista (Máquina Local) > 10g > Oracle Database 10g Enterprise Edition 10.2.0.4.0 > Servidor Linux (Servidor) > > Quanto ao processo, sempre as transmissões dos arquivos XML são feitas entre > bancos de versões iguais, contendo apenas um registro por arquivo, conforme > abaixo. De qualquer forma, fiz um teste apenas incluindo um XML em uma tabela > com um campo CLOB (simulando a importação feita) e o resultado foi o mesmo. > > Portanto, seguem informações sobre os códigos utilizados > Tabela TESTE_CLOB > (campo CLOB); > > Inclusão do registro na tabela TESTE_CLOB > INSERT INTO teste_clob values ('<?xml version="1.0"?> > <ROWSET> > <REGISTRO operacao="I" tabela="TESTE"> > <UN>1</UN> > <LANCAMENTO> </LANCAMENTO> > </REGISTRO> > </ROWSET>'); > COMMIT; > > > Select para retornar os valores das tags do XML: > SELECT EXTRACTVALUE(XMLTYPE(CAMPO),'//LANCAMENTO') LANCAMENTO, > EXTRACTVALUE(XMLTYPE(CAMPO),'//UN') UN > FROM TESTE_CLOB > > > Por fim, o resultado do Select é "1" e NULL para o banco 10g e "1" e " " para > o banco 11g. > > Agradeço a atenção. > > Atenciosamente, > Lucas > > --- Em oracle_br@yahoogrupos.com.br, José Laurindo <jlchiappa@> escreveu > > > > Lucas, seguinte : > > > > 1. absolutamente ** Não Basta ** dizer só "10g", nós REALMENTE precisamos > > saber a versão Exata, com 5 dígitos, do seu database, Bem como a Edição (se > > Enterprise, Standard, XE ou o que) - isto pra, como primeiro passo, > > Eliminarmos em tese a possibilidade de BUGS tais como o bug#4500235 > > "Whitespace not preserved with xml:space or DTD mixed content", que em > > princípio foi eliminado no patchset 10.2.0.3 . o Sitema Operacional do > > servidor Oracle é interessante também de conhecer, e uma noção de como o > > XML vai pro servidor (se é transferido via FTP, se é digitado e enviado > > pela Aplicação, qual a tool de programação/middleware envolvidos se é pela > > Aplicação, etc) pra podermos avaliar se questões do tipo caracter de fim de > > linha diferentes no DOS/Windows x unix/linux tocam algum apito aí ou não > > > > 2. depois da info acima, nós precisamos que vc nos dê a listagem de um > > arquivo XML com uns dois registros (um com o whitespace e outro sem), > > completo com o header e o trailer, os CREATE TABLEs e índices mínimos, os > > INSERTs se for preciso ** E ** um código PL/SQL o menor possível MAS > > funcional aonde o problema seja reproduzido > > > > Com essas duas coisas a gente pode dar uma olhada ... O que posso te dizer > > de cara é que eu Absolutamente Desconheço qquer setting para eliminar > > whitespaces, não acho que seja algum "ajuste" , ok ? > > > > []s > > > > Chiappa > > > > > > --- Em oracle_br@yahoogrupos.com.br, "Lucas Rombaldi" <lucas@> escreveu > > > > > > Bom dia Pessoal, > > > > > > Estou com um problema ao importar um arquivo XML para uma tabela no > > > Oracle 10g e gostaria de trocar algumas idéias para encontrar uma solução. > > > A parte do arquivo XML que está gerando problemas é a seguinte: > > > <?xml version="1.0"?> > > > <ROWSET> > > > <REGISTRO tabela="TABELA"> > > > <CAMPO1>10</CAMPO1> > > > <CAMPO2> </CAMPO2> > > > </REGISTRO> > > > </ROWSET> > > > > > > A importação é feita através da leitura do arquivo para uma variável CLOB > > > e a conversão da mesma para XMLType. A partir deste XMLType, utilizo a > > > função EXTRACTVALUE para a extração de cada valor do XML, da seguinte > > > forma:. > > > EXTRACTVALUE(XML,'//CAMPO1') > > > e > > > EXTRACTVALUE(XML,'//CAMPO2') > > > > > > Ao utilizar o Oracle 11g, estas funções irão me retornar "10" e " " > > > (espaço em branco) respectivamente. Porém, ao utilizar o Oracle 10g, > > > estas funções irão me retornar "10" e NULL respectivamente. > > > Portanto, o problema é que o retorno da função EXTRACTVALUE de uma tag > > > com valores em branco no Oracle 10g, ao invés de retornar " " (espaço em > > > branco), retorna NULL, ocasionando outros problemas, sendo que no Oracle > > > 11g este erro não ocorre. > > > > > > Agradeço desde já qualquer colaboração. > > > > > > Atenciosamente, > > > Lucas Rombaldi > > > > > >