我正在研究连接到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;
答案 0 :(得分:0)
尝试指定parameter direction:
.......
cmd.Parameters
.AddWithValue("@courriers_Count", MySqlDbType.Int32)
.Direction = ParameterDirection.InputOutput;
cmd.Parameters
.AddWithValue("@dossiers_Count", MySqlDbType.Int32)
.Direction = ParameterDirection.InputOutput;
.......