MySQL从c#中的存储过程接收inout参数

时间:2014-02-25 08:20:26

标签: c# mysql

我正在研究连接到MySQL数据库的ASP项目。现在我尝试使用INOUT参数调用过程,这将通知我删除了多少行。不幸的是我在cmd.ExecuteNonQuery()收到错误消息:

  

附加信息:例程的OUT或INOUT参数2   gta_geoptima_data.courrier_envoye_delete_row不是变量或NEW   BEFORE触发器中的伪变量

我的程序:

DROP procedure if exists `courrier_envoye_delete_row`;

DELIMITER $$
CREATE procedure `courrier_envoye_delete_row`(IN param_oid binary(16), INOUT  courriers_Count integer, INOUT  dossiers_Count integer) 
BEGIN
    -- DECLARE dossiers_Count, courriers_Count integer;

    DELETE FROM courrier_envoye WHERE oid = param_oid limit 1;
    set courriers_Count = (SELECT ROW_COUNT());
    set dossiers_Count = 1;
    select @courriers_Count, @dossiers_Count;
END$$

我的代码:

cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@param_oid", row_oid);
cmd.Parameters.AddWithValue("@courriers_Count", MySqlDbType.Int32);
cmd.Parameters.AddWithValue("@dossiers_Count", MySqlDbType.Int32);

cmd.ExecuteNonQuery();
singleItem.courriers_Count = (Int32) cmd.Parameters["@courriers_Count"].Value;
singleItem.dossiers_Count = (Int32) cmd.Parameters["@dossiers_Count"].Value;

1 个答案:

答案 0 :(得分:0)

尝试指定parameter direction

.......
cmd.Parameters
    .AddWithValue("@courriers_Count", MySqlDbType.Int32)
    .Direction = ParameterDirection.InputOutput;
cmd.Parameters
    .AddWithValue("@dossiers_Count", MySqlDbType.Int32)
    .Direction = ParameterDirection.InputOutput;
.......