[英]My Merge statement is failing
I have a merge statement which is to insert values into a database. 我有一个merge语句,它将值插入数据库。 I hit an exception point with an exception error 我遇到异常错误并出现异常
A MERGE statement must be terminated by a semi-colon (;). MERGE语句必须以分号(;)终止。
Here is my statement. 这是我的声明。 Could anyone point out what am I missing please? 谁能指出我想念的东西吗?
using (var masterDb = new SqlConnection(ConfigurationManager.ConnectionStrings["MasterDB"].ConnectionString))
{
masterDb.Open();
if (data != null)
try
{
conn.Execute(
"MERGE INTO [dbo].[FormSubmissions] AS TARGET " +
"USING(VALUES(@Id,@CreatedAt,@UpdatedAt,@IsComplete,@FormId,[@Source],@SentEmail)) AS SOURCE (Id,CreatedAt,UpdatedAt,IsComplete,FormId,[Source],SentEmail) " +
"ON TARGET.Id = SOURCE.Id " +
"WHEN MATCHED THEN " +
"UPDATE SET CreatedAt = SOURCE.CreatedAt,UpdatedAt = SOURCE.UpdatedAt,IsComplete = SOURCE.IsComplete, FormId = SOURCE.FormId, [Source] = SOURCE.[Source], SentEmail = SOURCE.SentEmail " +
"WHEN NOT MATCHED BY TARGET THEN " +
"INSERT(Id,CreatedAt,UpdatedAt,IsComplete,FormId,[Source],SentEmail) " +
"VALUES(Id,CreatedAt,UpdatedAt,IsComplete,FormId,[Source],SentEmail)",
new
{
Id = formSubmissionsId,
CreatedAt = data.CreatedAt,
UpdatedAt = data.UpdatedAt,
IsComplete = data.IsComplete,
FormId = data.FormId,
Source = data.Source,
SentEmail = data.SentEmail
});
}
catch (Exception ex)
{
throw;
}
finally
{
masterDb.Close();
}
};
conn.Close();
}
As the error says add a semicolon to the end of your statement. 如错误所述,在语句末尾添加分号。 So your Execute should look like the following. 因此,您的Execute应该如下所示。
conn.Execute(
"MERGE INTO [dbo].[FormSubmissions] AS TARGET " +
"USING(VALUES(@Id,@CreatedAt,@UpdatedAt,@IsComplete,@FormId,[@Source],@SentEmail)) AS SOURCE (Id,CreatedAt,UpdatedAt,IsComplete,FormId,[Source],SentEmail) " +
"ON TARGET.Id = SOURCE.Id " +
"WHEN MATCHED THEN " +
"UPDATE SET CreatedAt = SOURCE.CreatedAt,UpdatedAt = SOURCE.UpdatedAt,IsComplete = SOURCE.IsComplete, FormId = SOURCE.FormId, [Source] = SOURCE.[Source], SentEmail = SOURCE.SentEmail " +
"WHEN NOT MATCHED BY TARGET THEN " +
"INSERT(Id,CreatedAt,UpdatedAt,IsComplete,FormId,[Source],SentEmail) " +
"VALUES(Id,CreatedAt,UpdatedAt,IsComplete,FormId,[Source],SentEmail);",
new
{
Id = formSubmissionsId,
CreatedAt = data.CreatedAt,
UpdatedAt = data.UpdatedAt,
IsComplete = data.IsComplete,
FormId = data.FormId,
Source = data.Source,
SentEmail = data.SentEmail
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.