none
Erro estouro numerico RRS feed

  • Pergunta

  • Pessoal consegue me ajudar com o erro abaixo.

    Msg 8115, Level 16, State 2, Line 4
    Arithmetic overflow error converting expression to data type int.

    SELECT   

      count(*) as total,
      ((sum(DATALENGTH(blImagem)))/1024/1024) Tamanho_MB
    FROM  
      TAB1 DOC1
      join TAB2 DOC2 on DOC2.cdDocumento = DOC2.cdDocumento 
      join TAB3 DOC3 on DOC3.cdProcesso = DOC3.cdProcesso 
      join TAB4 doc4 on doc4.cdDocumento = doc4.cdDocumento
      join TAB5 Img on img.cdDocumento = img.cdDocumento
    WHERE  
      DOC2.flJuntado = 'S' and 
      DOC3.flAssinado = 'S' AND
      doc4 .CDSITUACAO in ('B', 'O', 'C') 
    go

    domingo, 15 de setembro de 2019 12:24

Respostas

  • Renata, no código que você postou há duas possibilidades para ter ocorrido o overflow.

    Experimente:

    -- código #1
    SELECT count_big (*) as total, ((sum( cast (DATALENGTH(blImagem) as bigint) ))/1024/1024) Tamanho_MB FROM ...
     


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Marcado como Resposta Renata Cardoso segunda-feira, 16 de setembro de 2019 13:52
    • Editado José Diz segunda-feira, 16 de setembro de 2019 14:41
    domingo, 15 de setembro de 2019 13:24

Todas as Respostas

  • Renata,

    Provavelmente o valor que esta sendo retornado não é suporte pelo tipo de dados Int.

    Veja se esta alteração te ajuda:

    SELECT   
    
      count(*) as total,
      Convert(BigInt,((sum(DATALENGTH(blImagem)))/1024/1024)) Tamanho_MB
    FROM  
      TAB1 DOC1
      join TAB2 DOC2 on DOC2.cdDocumento = DOC2.cdDocumento 
      join TAB3 DOC3 on DOC3.cdProcesso = DOC3.cdProcesso 
      join TAB4 doc4 on doc4.cdDocumento = doc4.cdDocumento
      join TAB5 Img on img.cdDocumento = img.cdDocumento
    WHERE  
      DOC2.flJuntado = 'S' and 
      DOC3.flAssinado = 'S' AND
      doc4 .CDSITUACAO in ('B', 'O', 'C') 
    go 

    Note que adicionei a função de conversão explícita Convert() para que o SQL Server realize a conversão dos dados calculados para o formato BigInt (inteiro grande).

    Eu não testei, valide e teste para ver se te ajuda.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    domingo, 15 de setembro de 2019 12:55
  • Renata, no código que você postou há duas possibilidades para ter ocorrido o overflow.

    Experimente:

    -- código #1
    SELECT count_big (*) as total, ((sum( cast (DATALENGTH(blImagem) as bigint) ))/1024/1024) Tamanho_MB FROM ...
     


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Marcado como Resposta Renata Cardoso segunda-feira, 16 de setembro de 2019 13:52
    • Editado José Diz segunda-feira, 16 de setembro de 2019 14:41
    domingo, 15 de setembro de 2019 13:24
  • Renata, no código que você postou há duas possibilidades para ter ocorrido o overflow.

    Experimente:

    -- código #1
    SELECT count_big (*) as total, ((sum( cast (DATALENGTH(blImagem) as bigint) ))/1024/1024) Tamanho_MB FROM ...
     

    Lembre-se de marcar esta resposta se ela te ajudou a resolver o problema.


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    José,

    Bem observado, o Count(*) pode realmente retornar um valor BigInt!.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Renata Cardoso segunda-feira, 16 de setembro de 2019 13:51
    • Não Marcado como Resposta Renata Cardoso segunda-feira, 16 de setembro de 2019 13:52
    domingo, 15 de setembro de 2019 14:23
  • Deu certo! muito obrigada José
    segunda-feira, 16 de setembro de 2019 13:52