SUM Com Replace!

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP
Dulima

DBA Oracle Jr

Informações do Ambiente:
* Versão do Oracle: 10 G
* Sistema Operacional: RH 4

Srs.. Bom dia a Todos!!!

Estou com um problema peculiar!!

Tenho uma Query dentro da aplicação que faz um SUM em um Campo Varchar2
Ate Ai Sem error...
Porem existe um Diferença

Quando eu executo essa query em alguma ferramenta de desenvolvimento preciso colocar um Replace nesse SUM

Selecionar tudo

  -- O REPLACE VEM AQUI
                       sum(replace(md.valor,'.',',')) valor,
  -- FINAL DO REPLACE

                       
Mais quando eu Jogo essa Query com Replace na Aplicação e mando executar
Da erro

Selecionar tudo

                       sum(replace(md.valor,'.',',')) valor,
                           *
ERROR at line 93:
ORA-01722: invalid number
alguém Faz Ideia do que Pode ser???
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

se não me engado o replace retorna uma string dai não tem como aplicar a funcao sum

inverta a ordem.. faça o seu sum e depois aplique o replace no seu resultado
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

não tinha lido tudo...

para aplicar o sum você vai ter de dar um to_number e então aplicar seu sum dai depois o seu replace

to_number('1210.73', '9999.99')

onde o segundo parametro e a mascara de conversao
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP
Dulima

DBA Oracle Jr

Cara Li umas 15 vezes ...

Acho que não me expressei mal!!


O Replace Funciona, mais so na Ferramenta com TOAD, no Servidor tenho que Tirar o Replace!!!

Isso que eu não Entendi....


porque que no TOAD SÓ funciona com o REPLACE e no servidor so Funciona quando eu Tiro o REPLACE??
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

desculpa a minha ignorancia mas eu acho q sum em campo varchar não funciona não
so vai funcionar se você não tiver dados para serem exibidos...
talvez na sua aplicaçao tem algumas clausulas where q impessam a exibiçao de dados


mas pelo que entendi o seu problema e com replace ne..

essa parada de . e , como separador de casa decimais esta ligado a regionalidade.. mas não faz sentido ser diferente uma vez que o toad esta acesasndo o mesmo banco q sua aplicaçao

em fim.. desculpa se estou tomando seu tempo
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP
Dulima

DBA Oracle Jr

Nada....

Mais esse e o Ponto Se é a Mesma base, porque funciona de Forma Diferente...
Eu li algumas coisa sobre a regionalidade, mais não tirou as minhas Duvidas!!!

Será que e configuração da Ferramenta???

porque não Faz Sentido....

a Mesma coisa rodar de forma diferente no mesmo banco!!!
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

pode ser algo que se configre no toad ne.. talvez o profile do usuario..
talvez a versao do toad não suporte a sua versao do oracle..

qual a versao toad?
qual a versao oracle?
qual o tipo do campo?
como e sua aplicação?
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP
Dulima

DBA Oracle Jr

qual a versao toad?

9.0.0.160

qual a versao oracle?

10.2.0.4.0

qual o tipo do campo?

Varchar2

como e sua aplicação?

Linguagem ASP e VB script

você concorda que e Estranho....??
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

o usuario de conexao da aplicacao e o mesmo que você esta usando no toad?
já tentou usar outra ferramenta.. plsql Developer por exemplo?

é estranho ne.. tem alguma coisa errada que não esta certa..rsrsrs
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

este e o inverso do seu..
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP
Dulima

DBA Oracle Jr

O Usuario e o Mesmo...


já Rodei no Developer.... Ate em maquinas Dferentes e NADA...

mesmo Erro..
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo

ORA-01722:	invalid number
Cause:	The attempted conversion of a character string to a number failed because the character string was not a valid numeric literal. Only numeric fields or character fields containing numeric data may be used in arithmetic functions or expressions. Only numeric fields may be added to or subtracted from dates.
Action:	Check the character strings in the function or expression. Check that they contain only numbers, a sign, a decimal point, and the character "E" or "e" and retry the operation. 
analisando a açao corretiva temos

Verifique as cadeias de caráter na função ou expressão. Verifique que eles contêm só números, um sinal, um ponto decimal, e o caráter "E" ou "e" e reexperimentam a operação.


Então ..
quando você substitui seu separador decimal de ponto para virgula la no toad ele não entende virgula por separador de casa decimal logo você tem o erro de invalid number
Ponto (.) é o separador americano e virgula (,) "brasileiro" então é bem provavel que alguma coisa deva ser setada no toad.. já deu uma boa fuçada??
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5026
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Provavelmente o TOAD deve estar setando a sessão.
Veja esse tópico sobre o formato:
http://glufke.net/oracle/viewtopic.php?t=5253

No TOAD, pra mudar o format é no menu VIEW / TOAD OPTIONS
Daí vai em General
Ali tem Ponto decimal ou Virgula decimal.
Dulima-SP
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 193
Registrado em: Qui, 24 Jan 2008 1:56 pm
Localização: SP
Dulima

DBA Oracle Jr

Show de Bola...
Funcionou... do BARALHO...


Vlw Mesmo....

Abç
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante