Erro ao executar sp = String or binary data would be truncated

24/11/2010

0

Boa tarde,
ao executar a sp abaixo é apresentado o seguinte erro:

Msg 8152, Level 16, State 14, Procedure sp_IntegracaoSapiens, Line 129
String or binary data would be truncated.
The statement has been terminated.

Alguem sabe me ajudar  ?


ALTER   procedure [dbo].[sp_Integracao]  
  @AnoMov                   int,
  @MesMov                   int
  
  
  
as declare @CodFornec       int,
           @CodGrupoCurral  int,
           @CodGrupoProduto int,
           --@NumCGC          varchar(14),
           --@NumCPF          varchar(11),
           @InscEstadual    varchar(20),---?,
           @QtdeLeite       int,
           @Linha           varchar(100),
           @DiaMov          int,
           @ValorUnit       numeric(18,4),
           @ValorTotal      numeric(18,2),
           @QtdeNF          int,
           @Registro        int,
           @DataEntrada     char(10),
           @CGCCPF             char(14)
          
  set      @DiaMov = (select DiasMes from TBPARAM where Ano = @AnoMov AND Mes = @MesMov)      
          
  set      @DataEntrada = dbo.flPad(rtrim(cast(@DiaMov as char(2))),'0',2) + '/' +
                          dbo.flPad(rtrim(cast(@MesMov as char(2))),'0',2) + '/' + 
                                          cast(@AnoMov as char(4)) 
          
  declare teste1   cursor local for    
          select M.CodFornec,
                 G.CodGrupoCurral,
                 E.CodGrupoProduto,
                 --max(G.NumCgc) as NumCGC,
                 case 
                 when isnull(max(G.NumCpf),'0') = '0' then dbo.fLPad(rtrim(isnull(max(G.NumCGC),'0')),'0',14)
                 else dbo.fLPad(rtrim(isnull(max(G.nUMCPF),'0')),'0',14)
                 end CGCCPF,
                 
                 --max(G.NumCPF) as NumCPF,
                 max(G.InscEstadual) as InscEstadual,
                 sum(M.ValorTotal) as ValorTotal,
                 max(QtdeLeite) as QtdeLeite
    
          from   TbMovFornec M  

                   inner join tbCurral C 
                           on C.CodFornec = M.CodFornec and
                              C.CodCurral = M.CodCurral
                                          
                   inner join tbEvento E
                           on E.CodEvento = M.CodEvento                        
             
                   inner join TbGrupoCurral G
                           on G.CodFornec = C.CodFornec AND
                              G.CodGrupoCurral = C.CodGrupoCurral
                             
                   inner join(select P.Ano,
                                     P.Mes,
                                     P.CodFornec,
                                     C.CodGrupoCurral,
                                     sum(P.QtdeLeite) as QtdeLeite
                              from   TBPRODUCAO P
                                     inner join TBCURRAL C
                                           on C.CodFornec = P.CodFornec AND
                                              C.CodCurral = P.CodCurral
                              where codclass = 'B' -- and ano= 2008 and mes= 8 and codfornec= 7460 
                              group by P.Ano,P.Mes,P.CodFornec,C.CodgrupoCurral)P 
                         on P.Ano = @AnoMov AND
                            P.Mes = @MesMov AND
                            P.CodFornec = M.CodFornec and
                            P.CodGrupoCurral = C.CodGrupoCurral
                                    
          where M.Ano = @AnoMov and M.Mes = @MesMov AND P.CodFornec = 152
          group by M.CodFornec,G.CodGrupoCurral,E.CodGrupoProduto              
          
       truncate table TBNFE_ENTRADA
       
   set @QtdeNF = isnull((select count(*)
                         from    (select M.CodFornec,
                                         C.CodGrupoCurral,
                                         E.CodGrupoProduto,
                                         sum(M.ValorTotal) as ValorTotal
                                    
                                  from   TbMovFornec M  

                                           inner join tbCurral C 
                                                   on C.CodFornec = M.CodFornec and
                                                      C.CodCurral = M.CodCurral
                                                                  
                                           inner join tbEvento E
                                                   on E.CodEvento = M.CodEvento                        
                                                            
                                  where M.Ano = @AnoMov and M.Mes = @MesMov AND M.CodFornec = 152
                                  group by M.CodFornec,C.CodGrupoCurral,E.CodGrupoProduto) X ),0)     
                         
                     
   if @QtdeNF > 0  
   
begin
     set @Registro = 0
     open teste1
    
     fetch next from teste1
     into @CodFornec,
          @CodGrupoCurral,
          @CodGrupoProduto,
          --@NumCGC,
          --@NumCPF,
          @CGCCPF,
          @InscEstadual,
          @ValorTotal,
          @QtdeLeite
          
     set   @Registro =  @Registro + 1   
     
     while @Registro <= @QtdeNF 
     begin
          set @ValorUnit = @ValorTotal/@QtdeLeite
          set @linha = @DataEntrada + 
                       @CGCCPF +
                       -- @NumCGC      +    
                       -- @NumCPF +                                                -- CPFCGC 
                       dbo.flPad(rtrim(cast(@QtdeLeite as varchar(8))),'0',8) +            -- Leite InNatura
                       dbo.flPad(rtrim(cast(@ValorUnit as varchar(8))),'0',8)     
                       
          insert into dbo.TBNFE_ENTRADA (Linha1) values (@Linha)
           
          fetch next from teste1
          into @CodFornec,
               @CodGrupoCurral,
               @CodGrupoProduto,
               --@NumCGC,
               --@NumCPF,
               @CGCCPF,
               @InscEstadual,
               @ValorTotal,
               @QtdeLeite 
              
          set @Registro =  @Registro + 1   
     end
     close teste1
     deallocate teste1
end
        



GO



Breno Rocha

Breno Rocha

Responder

Post mais votado

24/11/2010

creio que o problema deva estar no insert:

insert into dbo.TBNFE_ENTRADA (Linha1) values (@Linha)

provavelmente o conteúdo de @Linha é maior do que o campo Linha1 pode comportar.


Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

25/11/2010

Breno Rocha

Bom dia EMERSON!

matou a pau !!! é isso mesmo... ela estava com apenas 38 caracteres...
não tinha me atentado para isso


obrigado !
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar