2017-03-08 153 views
1

執行MySQL存儲過程什麼是使用Database.ExecuteSqlCommand與MySQL的參數的正確語法?

var affectedRows = 
     context.Database.ExecuteSqlCommand("exec UpdateStatus @p_customerId, @p_id", 
      new MySqlParameter("p_customerId", "006"), 
      new MySqlParameter("p_id", 9)); 

獲取個MySqlException

型 'MySql.Data.MySqlClient.MySqlException' 未處理的異常發生在EntityFramework.dll

更多信息:您有一個您的SQL語法錯誤;檢查 對應於您的MySQL服務器版本的權利 語法手冊使用近「EXEC UpdateStatus ‘006’,9」位於第1行

當我試着使用一個更新語句來代替存儲過程的名稱有用。但我想調用一個存儲過程。

我試圖使用實體框架5和6相同的錯誤

回答

1

MySQL的語法的命令從調用存儲過程是「CALL」。參數名稱前面應該有「@」。

所以,你需要更改代碼如下。

var affectedRows = 
    context.Database.ExecuteSqlCommand("CALL UpdateStatus (@p_customerId, @p_id)", 
     new MySqlParameter("@p_customerId", "006"), 
     new MySqlParameter("@p_id", 9)); 
+0

非常感謝你!!!! – Ben

相關問題