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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar