none
Erro ao Inserir dados em uma tabela RRS feed

  • Pergunta

  • Pessoal estou com o seguinte problema realizei a importação de um arquivo txt com sucesso, consigo comparar os dados importados em uma tabela temporária com os dados da tabela fisica digamos assim, porém não estou conseguindo inserir os dados estou tentando fazer assim:

    INSERT INTO FN_FORNECEDORES (INSCEST, /*CIDADEIBGE*/ CODEXTERNO, RAZAO, FANTASIA, CKPESSOA, ENDERECO, 
                                 BAIRRO, CIDADE, UF, CEP, COMPLEM, COBENDERECO, COBBAIRRO, COBCIDADE, 
                                 COBCEP, COBUF, NROPESSOA, NROPESSOACOB, TIPODESPESA, TIPORECEITA, CONVENIO, 
                                 ATFORNECEDOR, ATCLIENTE, CKETIQUETA, STFORNECEDOR, STCLIENTE, RECEITA, DIASRECEITA, 
                                 PARAM_ATUALIZACONTRAT, VLRFAMILIA, EXIGIRRECEITA, DTFECHAMENTO, INADIMPLENTE, 
                                 PAISIBGE, ATIVIDADE, REGIAO, AVISARRECEITA, USUARIO, DTATUALIZACAO, DTCADASTRO, 
                                 CKFORNECEDOR, CKCLIENTE, CGC) 
                                 
       SELECT #FORNECEDORES.INSCEST, #FORNECEDORES.CODIGO, #FORNECEDORES.NOME, #FORNECEDORES.NOME_ABREV1,
              #FORNECEDORES.TIPO, #FORNECEDORES.ENDERECO, #FORNECEDORES.BAIRRO, #FORNECEDORES.CIDADE, #FORNECEDORES.FEDERACAO,
              #FORNECEDORES.CEP, #FORNECEDORES.CXPOSTAL, #FORNECEDORES.ENDERECO, #FORNECEDORES.BAIRRO_COBR, 
              #FORNECEDORES.CIDADE_COBR, #FORNECEDORES.CEP_COBR, #FORNECEDORES.FEDERACAO, #FORNECEDORES.NUM_PESSOA,
              #FORNECEDORES.ESPACO1, #FORNECEDORES.AUX2, #FORNECEDORES.AUX2, #FORNECEDORES.CONVENIO, 
              #FORNECEDORES.AUX_FORNECEDOR, #FORNECEDORES.AUX_CLIENTE, #FORNECEDORES.ETIQUETAS, #FORNECEDORES.AUX_FORNECEDOR, 
              #FORNECEDORES.AUX_CLIENTE, #FORNECEDORES.RECEITA, #FORNECEDORES.DIASRECEITA, #FORNECEDORES.ATUALIZACONTRAT,
              #FORNECEDORES.VALORFAMILIA, #FORNECEDORES.EXIGERECEITA, #FORNECEDORES.DTFECHAMENTO, #FORNECEDORES.INADIPLEMTE,
              #FORNECEDORES.PAISIBGE, #FORNECEDORES.ATIVIDADE, #FORNECEDORES.REGIAO, #FORNECEDORES.AVISARECEITA, 
              #FORNECEDORES.USERATUALIZACAO, #FORNECEDORES.DTATUALIZACAO, #FORNECEDORES.DTCADASTRO,
              #FORNECEDORES.AUX_FORNECEDOR, #FORNECEDORES.AUX_CLIENTE, #FORNECEDORES.CGC
         FROM #FORNECEDORES 
    left join FN_FORNECEDORES on CAST(#FORNECEDORES.CODIGO AS FLOAT) = CAST(FN_FORNECEDORES.CODEXTERNO AS FLOAT) 
        WHERE FN_FORNECEDORES.CODEXTERNO is null      
    

    Quando executo o comando é gerado o seguinte erro:

    Mensagem 8152, Nível 16, Estado 14, Linha 117
    String or binary data would be truncated.
    The statement has been terminated.

    A estrtura das duas tabelas:

    CREATE TABLE #FORNECEDORES(
                                TIPO VARCHAR(1),
                                CODIGO VARCHAR(20),
                                NOME VARCHAR(60),
                                CGC VARCHAR(20),
                                ENDERECO VARCHAR(51),
                                BAIRRO VARCHAR(20),
                                CIDADE VARCHAR(32), 
                                CEP VARCHAR(20),
                                CXPOSTAL VARCHAR(20),
                                EMAIL VARCHAR(40),
                                TELEFONE VARCHAR(20),
                                TELEX VARCHAR(20),
                                FEDERACAO VARCHAR(03),
                                NUM_PESSOA VARCHAR(60),
                                BAIRRO_COBR VARCHAR(20),
                                CXPOSTAL_COBR VARCHAR(20),
                                CIDADE_COBR VARCHAR(32),
                                CEP_COBR VARCHAR(20),
                                FEDERACAO_COBR VARCHAR(03),
                                AUX_FORNECEDOR VARCHAR(01),
                                EMITENTE1 VARCHAR(14),
                                NOME_ABREV1 VARCHAR(15),
                                AUX2 VARCHAR(03),
                                AUX_CLIENTE VARCHAR(01),
                                EMITENTE2 VARCHAR(09),
                                NOME_ABREV2 VARCHAR(15),
                                AUX4 VARCHAR(3),
                                INSCEST VARCHAR(20),
                                AUX5 VARCHAR(20),
                                FEDERACAO3 VARCHAR(20),
                                ESPACO1 VARCHAR(8),
                                AUX6 VARCHAR(01),
                                DTATUALIZACAO DATE,
                                DTCADASTRO DATE,
                                USERATUALIZACAO VARCHAR(11),
                                VALORFAMILIA INTEGER,
                                ATIVIDADE INTEGER,
                                AVISARECEITA VARCHAR(1),
                                REGIAO INTEGER,
                                PAISIBGE INTEGER,
                                INADIPLEMTE VARCHAR(1),
                                DTFECHAMENTO VARCHAR(1),
                                EXIGERECEITA VARCHAR(1),
                                ATUALIZACONTRAT VARCHAR(1),
                                DIASRECEITA INTEGER,
                                RECEITA VARCHAR(1),
                                ETIQUETAS VARCHAR(1),
                                CONVENIO VARCHAR(1));
    CREATE TABLE [dbo].[FN_FORNECEDORES](
    	[CODIGO] [int] IDENTITY(1,1) NOT NULL,
    	[DTCADASTRO] [smalldatetime] NOT NULL,
    	[GRUPOEMP] [int] NULL,
    	[CODINTEGRACAO] [numeric](18, 0) NULL,
    	[CKFORNECEDOR] [varchar](1) NULL,
    	[CKCLIENTE] [varchar](1) NULL,
    	[ATFORNECEDOR] [varchar](1) NULL,
    	[ATCLIENTE] [varchar](1) NULL,
    	[STFORNECEDOR] [varchar](1) NULL,
    	[STCLIENTE] [varchar](1) NULL,
    	[CKETIQUETA] [varchar](1) NULL,
    	[CKPESSOA] [varchar](1) NULL,
    	[RAZAO] [varchar](60) NULL,
    	[FANTASIA] [varchar](35) NULL,
    	[CGC] [varchar](18) NULL,
    	[INSCEST] [varchar](18) NULL,
    	[CPF] [varchar](14) NULL,
    	[RG] [varchar](18) NULL,
    	[ULTIMACOMPRA] [smalldatetime] NULL,
    	[ATIVIDADE] [int] NULL,
    	[REGIAO] [int] NULL,
    	[ENDERECO] [varchar](40) NULL,
    	[COMPLEM] [varchar](14) NULL,
    	[NUMERO] [varchar](6) NULL,
    	[BAIRRO] [varchar](35) NULL,
    	[CIDADE] [varchar](30) NULL,
    	[CEP] [varchar](9) NULL,
    	[UF] [varchar](2) NULL,
    	[COBENDERECO] [varchar](40) NULL,
    	[COBCOMPLEM] [varchar](14) NULL,
    	[COBNUMERO] [varchar](6) NULL,
    	[COBBAIRRO] [varchar](20) NULL,
    	[COBCIDADE] [varchar](30) NULL,
    	[COBCEP] [varchar](9) NULL,
    	[COBUF] [varchar](2) NULL,
    	[FATENDERECO] [varchar](40) NULL,
    	[FATCOMPLEM] [varchar](14) NULL,
    	[FATNUMERO] [varchar](6) NULL,
    	[FATBAIRRO] [varchar](20) NULL,
    	[FATCIDADE] [varchar](30) NULL,
    	[FATCEP] [varchar](9) NULL,
    	[FATUF] [varchar](2) NULL,
    	[ENTENDERECO] [varchar](40) NULL,
    	[ENTCOMPLEM] [varchar](14) NULL,
    	[ENTNUMERO] [varchar](6) NULL,
    	[ENTBAIRRO] [varchar](20) NULL,
    	[ENTCIDADE] [varchar](30) NULL,
    	[ENTCEP] [varchar](9) NULL,
    	[ENTUF] [varchar](2) NULL,
    	[OBS] [text] NULL,
    	[CONVENIO] [varchar](1) NULL,
    	[DTFECHAMENTO] [int] NULL,
    	[NROPESSOA] [varchar](9) NULL,
    	[NROPESSOACOB] [varchar](9) NULL,
    	[TIPORECEITA] [varchar](3) NULL,
    	[TIPODESPESA] [varchar](3) NULL,
    	[INADIMPLENTE] [varchar](1) NULL,
    	[VLRFAMILIA] [numeric](18, 2) NULL,
    	[RECEITA] [varchar](1) NULL,
    	[DIASRECEITA] [int] NULL,
    	[PARAM_ATUALIZACONTRAT] [varchar](1) NULL,
    	[EXIGIRRECEITA] [varchar](1) NULL,
    	[AVISARRECEITA] [varchar](1) NULL,
    	[ENQUADRAMENTO] [varchar](1) NULL,
    	[CODEXTERNO] [varchar](20) NULL,
    	[CIDADEIBGE] [int] NULL,
    	[PAISIBGE] [int] NULL,
    	[SUFRAMA] [varchar](9) NULL,
    	[USUARIO] [varchar](25) NULL,
    	[DTATUALIZACAO] [datetime] NULL,
    	[CODEXTERNOPREST] [varchar](30) NULL,
    	[MOBILEPHARMACYEMAILCONTROLE] [varchar](50) NULL,
    	[MOBILEPHARMACYSENHACONTROLE] [varchar](6) NULL,
    	[CODFORNECEDORPIRAMIDE] [varchar](30) NULL,
    	[CODCLIENTEPIRAMIDE] [varchar](30) NULL,
    	[DTULTBOLETO] [datetime] NULL,
    PRIMARY KEY CLUSTERED 
    (
    	[CODIGO] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    
    

    Alguém poderia me ajudar sou em sql e estou tentando finalizar essa aplicação?

    quinta-feira, 4 de abril de 2013 14:48

Respostas

  • Eder,

    Concordo com o Logan e Wellinghton, o problema esta justamente na passagem dos dados entre as tabelas, pois o tamanho do dado de origem é maior do que o campo que esta recebendo os dados.

    Normalmente isso acontece de forma comum em campos do tipo Varchar(), Char(), NChar, NVarchar e Varbinary.

    Verifique a linha de número 117, provavelmente o erro esta ocorrendo neste ponto.


    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]

    • Marcado como Resposta eder.luca sexta-feira, 5 de abril de 2013 11:58
    quinta-feira, 4 de abril de 2013 16:47

Todas as Respostas

  • Olá Eder boa tarde, esse erro é que provavelmente algum campo seu está recebendo valor diferente do esperado. ou algum varchar() seu está estourando o limite, confere na tabela  FN_FORNECEDORES se os campos estão corretos.

    Abração.


    Wellinghton Pimentel Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 4 de abril de 2013 15:00
  • Eder, como o Wellington falou, o problema é que você está tentando inserir um valor em um campo varchar que é maior do que a tua tabela de destino está definida.

    Um exemplo é o campo INSCEST, que na tabela #FORNECEDORES é um varchar(20) e na FN_FORNECEDORES é um varchar(18).

    Dê uma olhada nos demais campos e veja onde pode estar o problema.

    Espero ter ajudado.

    []'s

    quinta-feira, 4 de abril de 2013 15:23
  • Eder,

    Concordo com o Logan e Wellinghton, o problema esta justamente na passagem dos dados entre as tabelas, pois o tamanho do dado de origem é maior do que o campo que esta recebendo os dados.

    Normalmente isso acontece de forma comum em campos do tipo Varchar(), Char(), NChar, NVarchar e Varbinary.

    Verifique a linha de número 117, provavelmente o erro esta ocorrendo neste ponto.


    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]

    • Marcado como Resposta eder.luca sexta-feira, 5 de abril de 2013 11:58
    quinta-feira, 4 de abril de 2013 16:47
  • Pessoal vou verificar um abraço.
    quinta-feira, 4 de abril de 2013 17:22
  • Pessoa muito obrigado pela ajuda realmente eram três campos da minha tabela temporaria que estavam maiores que o destino.
    sexta-feira, 5 de abril de 2013 11:58
  • que bom que achou o problema, precisando é só avisar...

    Abração


    Wellinghton Pimentel Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 5 de abril de 2013 12:29