【问题标题】:What is the correct syntax for using Database.ExecuteSqlCommand with parameters on mysql?在 mysql 上使用带参数的 Database.ExecuteSqlCommand 的正确语法是什么?
【发布时间】:2017-03-08 17:49:13
【问题描述】:

执行mysql存储过程

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

获取 MySqlException

EntityFramework.dll 中出现“MySql.Data.MySqlClient.MySqlException”类型的未处理异常

附加信息:您的 SQL 语法有错误;查看 与您的 MySQL 服务器版本相对应的手册 在 'exec UpdateStatus 附近使用的语法 '006', 9' 在第 1 行

当我尝试用更新语句替换存储过程名称时,它可以工作。但我想改为调用存储过程。

我尝试使用 Entity Framework 5 和 6 相同的错误

【问题讨论】:

    标签: c# mysql sql entity-framework


    【解决方案1】:

    MySQL 从命令调用存储过程的语法是“CALL”。参数名称也应该在前面有“@”。

    所以你需要修改代码如下。

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

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      相关资源
      最近更新 更多