O erro 120 do SQL Server ocorre quando você não especifica colunas suficientes em seu
INSERT lista ao usar um SELECT lista para os valores a serem inseridos. Para ser mais específico, isso acontece quando você usa um
SELECT lista em seu INSERT instrução, mas o SELECT list não retorna tantas colunas quanto você está especificando com o INSERT . Isso é fácil de corrigir. Apenas certifique-se de que o número de colunas corresponda ao seu
INSERT e SELECT Lista. Código incorreto
Aqui está um exemplo de código que causa esse erro.
INSERT INTO OrdersLatest (
OrderId,
OrderDate,
OrderDesc
)
SELECT
OrderId,
OrderDate
FROM OrdersMarch; Resultado:
Msg 120, Level 15, State 1, Line 1 The select list for the INSERT statement contains fewer items than the insert list. The number of SELECT values must match the number of INSERT columns.
Nesse caso, especifico três colunas no meu
INSERT , mas só seleciono duas colunas no meu SELECT Lista. Bom Código
Veja como corrigir o erro acima.
INSERT INTO OrdersLatest (
OrderId,
OrderDate,
OrderDesc
)
SELECT
OrderId,
OrderDate,
OrderDesc
FROM OrdersMarch; Resultado:
(5 rows affected)
Tudo o que fiz foi adicionar o
OrderDesc coluna para o SELECT Lista. Especificando menos colunas
O exemplo anterior obviamente assume que eu queria inserir a coluna extra. Se não queríamos que essa coluna fosse inserida, deveríamos tê-la removido do
INSERT completamente. Assim.
INSERT INTO OrdersLatest (
OrderId,
OrderDate
)
SELECT
OrderId,
OrderDate
FROM OrdersMarch; No entanto, isso dependeria se temos ou não algum
NOT NULL restrições na tabela de destino. Usando um curinga na lista SELECT
Também é possível usar o asterisco (
* ) curinga no SELECT Lista. INSERT INTO OrdersLatest (
OrderDate,
OrderId,
OrderDesc
)
SELECT *
FROM OrdersMarch; Embora isso não seja considerado uma boa prática, pois você pode selecionar acidentalmente as colunas erradas ou elas podem estar na ordem errada etc.