2016-01-05 91 views
1

我有一個合併聲明,它將值插入到數據庫中。我遇到異常點,並出現異常錯誤我的合併聲明失敗

MERGE語句必須以分號(;)結尾。

這是我的發言。任何人都可以指出我錯過了什麼?

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(); 
} 
+2

的信息是很清楚,在年底'加上分號..,SentEmail);」,' – Mihai

+0

@Mihai你在哪裏問我添加的;當我catch語句 – yuvs

+0

之前已經有一個Mihai告訴你在conn.Execute()方法中的String參數末尾添加分號,即:「VALUES(Id,CreatedAt,UpdatedAt,IsComplete,FormId,[Source],SentEmail)」+「; 「 – Bandreid

回答

2

由於錯誤提示在分析結束時添加分號。所以你的執行應該如下所示。

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 
    });