none
Adiciono um campo em uma tabela e não consigo dar INSERT RRS feed

  • Pergunta

  • Srs.

     

    Adiciono um campo varchar(13), alow null,  em uma tabela existente, adiciono o campo no comando insert da minha stored procedure e tanto preenchido, quanto nulo, o banco retorna a menssagem que não posso adicionar pois o número de colunas é diferente do número de valores(There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement). Alguem sabe se isso é realmnte uma restrição?

    segunda-feira, 13 de outubro de 2008 23:53

Todas as Respostas

  • Eduardo,

     

         Este erro está acontecendo porque você tem uma quantidade diferente de campos no teu insert, incompatível com a cláusula Values

     

         Exemplo:

    Digamos que você esteja fazendo o insert assim

     

    INSERT INTO TABELA (CAMPO1, CAMPO2) VALUES (VALOR1, VALOR2)

     

    Note que eu tenho o mesmo número de campos (2) com o de values (2)

     

    Se eu fizer assim:

     

    INSERT INTO TABELA (CAMPO1, CAMPO2, CAMPO3) VALUES (VALOR1, VALOR2)

     

    O SQL retornará o erro que você citou no seu post (note que eu tenho 3 campos (Campo1, Campo2, Campo3), mas somente 2 valores (Valor1, Valor2)

     

    Ajuste isso e o seu erro estará resolvido!

     

    []s

    terça-feira, 14 de outubro de 2008 00:20
    Moderador
  • Eduardo,

     

    Você está familiarizado com o conceito de batch e script no SQL Server ? Acredito que o seu problema seja algo relacionado a isso. Acredito que você tenha que finalizar o batch antes de executar a procedure:

     

    Ex:

     

    Code Snippet

    -- comando para incluir a coluna na tabela

    ALTER TABLE SuaTabela ...

     

    -- finaliza o batch

    GO  

     

    -- executa procedure

    EXEC sua_procedure

     

    Espero ter ajudado.

     

    Att.

     

    Ari

     

    terça-feira, 14 de outubro de 2008 00:20
  • Eduardo,

     

    Acho que não tinha entendido direito a sua dúvida. Verifique o que o Roberto escreveu.

     

    Att.

     

    Ari

     

    terça-feira, 14 de outubro de 2008 00:25
  • Boa Noite,

     

    Provavelmente a instrução de INSERT especifica os campos, mas nem todos os valores. Ex:

     

    Code Snippet

    INSERT INTO tbl (Campo1, Campo2, Campo3) VALUES (1,2)

    INSERT INTO tbl (Campo1, Campo2) VALUES (1,2,3)

     

    Nos exemplos são especificados três campos e dois valores e dois campos e três valores. É preciso especificar a mesma quantidade de campos e de valores. Ex:

     

    Code Snippet

     

    INSERT INTO tbl (Campo1, Campo2, Campo3) VALUES (1,2,3)

    INSERT INTO tbl (Campo1, Campo2) VALUES (1,2)

     

     

    [ ]s,

     

    Gustavo

    terça-feira, 14 de outubro de 2008 00:25
  • Ari,

     

    A inclusão do campo eu fiz direto no Management Studio de forma visual. Acho que este conceito não se aplique para esta situações.

     

    Com este campo adicionado na tabela, e nos insert's das procs,  o SQL me retorna o erro como se não fosse possível adicionar este campo no insert.

     

    Obs.: Eu já verifiquei a quantidade de filds e values, e são compatíveis.

     

    sexta-feira, 31 de outubro de 2008 12:31
  • Eduardo,

     

    Post o código da procedure aqui!!!

    sexta-feira, 31 de outubro de 2008 14:18
  • Olá Eduardo,

     

    Abra um Profiler e adicione o evento StoredProcedure : StmtStarting e StoreProcedure : StmtCompleted. A instrução que der problema terá um Starting mas não terá um completed. Verifique que instrução é essa (talvez a SP esteja nos enganando).

     

    Se for um 2005 utilize o TRY CATCH para capturar a linha do erro.

     

    [ ]s,

     

    Gustavo

     

    sexta-feira, 31 de outubro de 2008 17:57