在我的SQL存储过程集合中找不到参数?

时间:2017-01-07 05:46:10

标签: c# stored-procedures

我有像这样的参数

        Mysql_param[0] = new MySqlParameter("p_MainID", SqlDbType.Int);
        Mysql_param[0].Value = Convert.ToInt32 ( MID);

        Mysql_param[1] = new MySqlParameter("p_DetailID", SqlDbType.Int);
        Mysql_param[1].Value = Convert.ToInt32( DID);

        Mysql_param[2] = new MySqlParameter("p_UserID ", SqlDbType.Int);
        Mysql_param[2].Value = Convert.ToInt32(USERID== "" ? "0" : USERID);

        MySqlDataAdapter da = new MySqlDataAdapter(pobj_cmd);
            ds = new DataSet();
            da.Fill(ds);

我有这样的存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_HistoryInsertion`(
       IN p_MainID  int 
      , IN p_DetailID int
      , IN p_USERID   int
)
    INSERT INTO history (`MainID`, `DetailID`, )
    VALUES (p_MainID, p_DetailID);              

但是我收到了一个错误:

  

{"参数' p_USERID'没有在集合中找到。"}

实际上p_USER是数据库中的自动增量,后来在更新和删除以及选择操作中使用,因此我必须按原样在每个过程中传递它,因此每个地方都存在与该city_id相关的相同错误超过6个存储过程

每列的数据类型为INT

1 个答案:

答案 0 :(得分:1)

我在代码中注意到的第一件事是在参数名称" CITY_ID"之后有一个额外的空格。你提到的参数名是" CITY_ID"我认为应该" CITY_ID"。

这应该可以解决您的问题。如果您仍然看到问题,请查看以下解决方案。

您的存储过程中有参数p_CMP_ID,p_BRC_ID和p_CITY_ID。 但根据您的代码,您只创建一个名称正确的参数" p_CMP_ID"。

其他两个参数的名称与预期的名称不同。

更改参数名称" BRC_ID"到" p_BRC_ID"和" CITY_ID"到" p_CITY_ID"应该解决你的问题。

谢谢和问候, Chetan Ranpariya

块引用