none
Truncar Valor total - SQL RRS feed

  • Pergunta

  • Bom dia a todos.

    Estou realializando um UPDATE em um TABELA da seguinte forma:

    TABELAS :

    A02ANFCL

    A02ANFSV

    ( Estou jogando o valor da DIVISÃO entre o TOTAL / QUANTIDADE para o campo TOTAL de outra tabela com a seguinte expressão: )

     

    UPDATE A02ANFCL SET A02ANFCL.NFTOTAL =
                    ( SELECT (CAST(SUM(A02ANFSV.nvtotal/A02ANFSV.NVQTD) AS NUMERIC(15,2)))
                    FROM A02ANFSV LEFT JOIN A02ANFCL ON
                    (A02ANFCL.NFSEQ = A02ANFSV.NVNFSEQ)
                    WHERE A02ANFCL.NFSER = 'CF')
                    WHERE NFSEQ>= :SEQUENCIA_INICIAL AND
                    NFSEQ <= :SEQUENCIA_FINAL

     

    Mas esta me retornando a segunte mensagem.

    Arithmetic overflow or division by zero has occurred.
    arithmetic exception, numeric overflow, or string truncation.

    Deduzo que, o campo esta estourando.

    Se tiverem como me ajudar. Agradeço desde Ja.

    Um abraço.

    sábado, 24 de dezembro de 2011 11:03

Todas as Respostas

  • Se você rodar o comando:

    1) SELECT (CAST(SUM(A02ANFSV.nvtotal/A02ANFSV.NVQTD) AS NUMERIC(15,2)))
                    FROM A02ANFSV LEFT JOIN A02ANFCL ON
                    (A02ANFCL.NFSEQ = A02ANFSV.NVNFSEQ)
                    WHERE A02ANFCL.NFSER = 'CF'

     

    2) SELECT A02ANFSV.nvtotal, A02ANFSV.NVQTD
                    FROM A02ANFSV LEFT JOIN A02ANFCL ON
                    (A02ANFCL.NFSEQ = A02ANFSV.NVNFSEQ)
                    WHERE A02ANFCL.NFSER = 'CF'

     

    É mostrado o que nas duas situações?

     


    Marco Antônio Pinheiro / MCTS - MCC http://marcoantoniopinheiro.blogspot.com
    segunda-feira, 26 de dezembro de 2011 20:08
  • Matheus,

    Você já tentou utilizar a função Isnull para realizar um tratamento caso o valor que esteja sendo dividido seja Nulo?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    terça-feira, 27 de dezembro de 2011 00:49
  • Olá Matheus, a primeira estratégia seria tentar identificar na tua lógica quais valores seriam retornados para estes campos, fazer como o Marco Antônio comentou.

    Tendo em mãos os valores tu pode identificar inclusive se o teu CAST com number 15,2 esta correto.

    Talvez tu identifique na tabela valores que gerem o problema que tu esta tendo.

    Para cada caso é uma tratativa diferente inclusive isso vai mudar a lógica do teu update.

    Verifica os valores que retornam provavelmente algum deles esta incorreto ou não esta conforme tu esperava.

    Espero que ajude .

    Vlew.

    terça-feira, 27 de dezembro de 2011 10:55