Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 391195
            [titulo] => Erro ao executar sp = String or binary data would be truncated
            [dataCadastro] => DateTime Object
                (
                    [date] => 2010-11-24 18:47:19
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 56986
            [status] => A
            [isExample] => 
            [NomeUsuario] => EMERSON E. DO NASCIMENTO
            [Apelido] => Emerson
            [Foto] => 
            [Conteudo] => 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.


) )

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

Breno Rocha
   - 24 nov 2010

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  ?

#Código

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



Post mais votado

Emerson
   - 24 nov 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.

1
|
0

Breno Rocha
   - 25 nov 2010

Bom dia EMERSON!

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

obrigado !

1
|
0