Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao inserir PromocaoProduto Incorrect syntax near ','. Incorrect syntax near 'MERGE'

Olá.

Na aula 6, tópico 05 Manipulando promoções e produtos, é feita a inserção dos produtos.

Porém ao executar gera o seguinte erro.

Incorrect syntax near ','. Incorrect syntax near 'MERGE'.

São gerados os seguintes comandos SQL

Executed DbCommand (4ms) [Parameters=[@p0='?' (Size = 4000), @p1='?' (Size = 4000), @p2='?', @p3='?' (Size = 4000), @p4='?' (Size = 4000), @p5='?' (Size = 4000), @p6='?', @p7='?' (Size = 4000), @p8='?' (Size = 4000), @p9='?' (Size = 4000),@p10='?', @p11='?' (Size = 4000), @p12='?', @p13='?', @p14='?' (Size = 4000)], CommandType='Text', CommandTimeout='30']
SET NOCOUNT ON;
DECLARE @toInsert0 TABLE ([Categoria] nvarchar(max), [Nome] nvarchar(max), [PrecoUnitario] float, [Unidade] nvarchar(max), [_Position] [int]);
INSERT INTO @toInsert0
VALUES (@p0, @p1, @p2, @p3, 0),
(@p4, @p5, @p6, @p7, 1),
(@p8, @p9, @p10, @p11, 2);

DECLARE @inserted0 TABLE ([Id] int, [_Position] [int]);
MERGE [Produtos] USING @toInsert0 AS i ON 1=0
WHEN NOT MATCHED THEN
INSERT ([Categoria], [Nome], [PrecoUnitario], [Unidade])
VALUES (i.[Categoria], i.[Nome], i.[PrecoUnitario], i.[Unidade])
OUTPUT INSERTED.[Id], i._Position
INTO @inserted0;

SELECT [t].[Id] FROM [Produtos] t
INNER JOIN @inserted0 i ON ([t].[Id] = [i].[Id])
ORDER BY [i].[_Position];

INSERT INTO [Promocoes] ([DataInicio], [DataTermino], [Descricao])
VALUES (@p12, @p13, @p14);
SELECT [Id]
FROM [Promocoes]
WHERE @@ROWCOUNT = 1 AND [Id] = scope_identity();

A versão do SQL Server que gerou o erro

Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Express Edition on Windows NT 6.1 (Build 7601: Service Pack 1)

Gerei o script de migração com o comando Script-Migration e executei o programa em outra base SQL Server. Então funcionou.

Essa é a versão do SQL Server que funcionou

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Express Edition with Advanced Services (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)

Irei continuar as próximas aulas com a versão acima, mas gostaria de saber o que gerou esse erro. Saber se esse erro é contornável.

2 respostas
solução!

Olá, Rafael. Tudo bom?

Os scritps gerados pelo Entity Framework Core são compatíveis apenas com versões do SQL Server à partir do 2008.

Então, além deste problema enfrentado agora, muitos outros virão, caso você tente utilizar uma versão anterior ao 2008.

Tudo bem? Esclareci sua dúvida?

Abs.

Olá Guilherme.

Valeu pela informação.