Inquiridor
Adiciono um campo em uma tabela e não consigo dar INSERT

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?
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
-
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
-
-
Boa Noite,
Provavelmente a instrução de INSERT especifica os campos, mas nem todos os valores. Ex:
Code SnippetINSERT
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 SnippetINSERT
INTO tbl (Campo1, Campo2, Campo3) VALUES (1,2,3)INSERT
INTO tbl (Campo1, Campo2) VALUES (1,2)[ ]s,
Gustavo
-
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.
-
-
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