Mysql 使用C调用存储过程#
这是我的存储过程Mysql 使用C调用存储过程#,mysql,stored-procedures,Mysql,Stored Procedures,这是我的存储过程 CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_CPC`(IN _B VARCHAR(100),IN _G VARCHAR(2), IN _R VARCHAR(30), IN _D VARCHAR(30), OUT _C FLOAT, OUT _P FLOAT) 开始 //听到什么 结束$$ 定界符 我用C#流代码调用这个存储过程 DataSet tmpDataSet = new DataSet();
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_CPC`(IN _B VARCHAR(100),IN _G VARCHAR(2), IN _R VARCHAR(30), IN _D VARCHAR(30), OUT _C FLOAT, OUT _P FLOAT)
开始
//听到什么
结束$$
定界符
我用C#流代码调用这个存储过程
DataSet tmpDataSet = new DataSet();
mCommand.CommandText = "sp_CPC";
mCommand.CommandType = CommandType.StoredProcedure;
// mCommand.CommandText = "sp_select_all_employees";
mCommand.Parameters.AddWithValue("@_B", "bty-23");
mCommand.Parameters.AddWithValue("@_G", "3");
mCommand.Parameters.AddWithValue("@_R", "9000");
mCommand.Parameters.AddWithValue("@_D", "92");
mCommand.Parameters.Add("@_C",SqlDbType.Float);
mCommand.Parameters["@_C"].Direction = ParameterDirection.Output;
mCommand.Parameters.Add("@_P", SqlDbType.Float);
mCommand.Parameters["@_P"].Direction = ParameterDirection.Output;
try
{
mConnection.Open();
mCommand.ExecuteNonQuery();
mAdapter.Fill(tmpDataSet);
}
catch (Exception ex)
{
strErrorInfo = ex.ToString();
}
finally
{
mConnection.Close();
}
return tmpDataSet;
}
它显示以下错误
输入字符串的格式不正确。
我该如何解决它呢?我想你在下一节中犯了错误
mCommand.Parameters.Add("@_C",SqlDbType.Float);
mCommand.Parameters["@_C"].Direction = ParameterDirection.Output;
mCommand.Parameters.Add("@_P", SqlDbType.Float);
mCommand.Parameters["@_P"].Direction = ParameterDirection.Output;
将SqlDbType更改为MySqlDbType
mCommand.Parameters.Add("@_C",MySqlDbType.Float);
mCommand.Parameters["@_C"].Direction = ParameterDirection.Output;
mCommand.Parameters.Add("@_P", MySqlDbType.Float);
mCommand.Parameters["@_P"].Direction = ParameterDirection.Output;
谢谢你,现在可以工作了。但现在我面临新的问题,第一次调用它工作,第二次调用它显示参数“@u C”已经定义。我该怎么解决呢?帮帮我