Pular para o conteúdo
  • Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 2 anos atrás por Avatar de José Laurindo ChiappaJosé Laurindo Chiappa.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #153932
    Avatar de gbaltargbaltar
    Participante

      Boa tarde.

      Estou tendo um problema ao tentar realizar um comando de insert em um campo Data.

      Ao executar o comando abaixo, o programa retorna o erro ORA 01722 – Invalid Number.

       

      Insert into VISITA_SAS VALUES(sys_guid(),’CTIM’,’VF120′,’0006241981′,

      to_date(’22/03/2022 13:34:49′,’DD/MM/YYYY   HH24:MI:SS’), ‘20220322’, ’13:34:49′,

      to_date(’22/03/2022 13:34:49′, ‘DD/MM/YYYY  HH24:MI:SS’),

      to_date(’22/03/2022 13:38:05′,’DD/MM/YYYY  HH24:MI:SS’),

      ’00:03:16′,’2′,’SIM’,’NAO’,’S’,’SIM’,’NA’,’-5,080609′,’-42,856332′,’-5,12277′,’-42,8241967′,’-5,1229932′,’-42,8240876′,’NAO’,’SIM’,’NAO’,’5893′,’5920′)

      O curioso é que esse erro só ocorre quando é executado pela aplicação no servidor.

      Rodando a aplicação na minha máquina, ou executando o comando diretamente no SQL DEVELOPER, o erro não ocorre.

      Antes estava dando erro de Mês Inválido, coloquei o TO_DATE e esse formato que está no comando, e agora o erro é o erro ORA 01722 – Invalid Number.

       

      Alguém tem alguma idéia de como resolver o problema?

       

      Oriado desde já.

       

       

      #153933
      Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
      Moderador

        Tudo blz ? Então, COM CERTEZA ABSOLUTA vc está fazendo Conversão Implícita, ie, está passando uma STRING pra uma coluna não-string , numérica certamente dada a msg de erro  : plz VERIFIQUE CUIDADOSAMENTE o datatype de CADA COLUNA nessa tabela , e encontre a coluna que está implicando em conversão de dados…
        Eu, particularmente, APOSTARIA nessas daqui, tipo :

        ’-5,080609′,

        Se a coluna recebendo esse valor é numérica no banco de dados, AO MESMO TEMPO que É ABSURDO COMPLETO vc passar um número como string (SIM, absolutamente TUDO que está dentro de aspas É SIM UMA STRING) , ainda temos a questão que no SQL e no PL/SQL o caracter de decimal por padrão SEMPRE É PONTO, e Não vírgula…. Sendo isso, a correção MUITO SIMPLES seria vc passar no INSERT os números SEM ASPAS e com PONTO como indicador de decimal, tipo :

        … -5.080609, …

        ok ?? COM ISSO vc EVITA a conversão implícita que existe entre strings x coluna não-string….

        Abraços,

        José Laurindo Chiappa

        #154086
        Avatar de MottaMotta
        Participante

          O Sql Developer tem uma opção de parametrização da seção para formatos de data e números , pelo padrão , creio , vem no formato em “português” , quando o objeto roda na produção vai pelo “americano” , SEMPRE : 1 deixo o padrão do Tio Sam dara , números etc  , 2 mesmo assim SEMPRE informo o padrão de data e hora nas conversões 3 se o sql que tiver de formatar valores ou datas fazer as conversões neste  , mas o melhor e deixar para a aplicação.

          Neste caso vale o “na minha máquina roda” 🙂

          #154092
          Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
          Moderador

            Blz ? Sim, isso aí TUDO que vc falou sobre Formatação para Exibição de dados numéricos e datas tá absolutamente certo, é isso aí ….

            Na mensagem do colega, porém, como o erro dá num INSERT, eu acredito que a causa-raiz é que o colega lá que perguntou Não Segue no INSERT que ele mostrou pra gente os procedimentos de passagem de valores corretos : na linguagem SQL (e na PL/SQL também) TUDO que estiver dentro de aspas VAI ser considerado uma string, E se o destino (da coluna sofrendo o INSERT no caso) NÃO FOR string (é DATE ou NUMBER), VAI ACONTECER CONVERSÃO IMPLÍCITA….

            Para evitar isso, NO CASO EM QUESTÃO onde o erro é INVALID NUMBER e (apesar do colega não ter dito, SUPOMOS que a coluna é NUMBER) , eu simplesmente REMOVERIA as aspas do valor a inserir E usaria sempre ponto como indicador de decimal : PRONTO, com essa simples Ação o comando VAI PASSAR A FUNCIONAR SEMPRE, ** independente ** de settings da ferramenta e/ou do banco….

             

            Abraços,

             

            Chiappa

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.
          plugins premium WordPress