C#如何调用MySQL的执行存储过程
写了一个存储过程,里面封装2个Update Sql语句,有输入参数,在C#中调用,老是提示"#42000 FUNCTION 存储过程.....不存在"。调用代码如下(使用MySql.Data.dll做了封装),请指点。存储过程在MySQL中调用正常。
public bool ExecGroupExchange(string housingNumber,string alteredDeviceGroup,DateTime changeOutDate,
string newDeviceGroup,DateTime changeInDate,int validYear){
MySqlParameter param1 = new MySqlParameter("HousingNumber",MySqlDbType.VarChar,9);
param1.Value = housingNumber;
MySqlParameter param2 = new MySqlParameter("AlteredDeviceGroup",MySqlDbType.VarChar,3);
param2.Value = alteredDeviceGroup;
MySqlParameter param3 = new MySqlParameter("AltChangeOutDate",MySqlDbType.Date);
param3.Value = changeOutDate;
MySqlParameter param4 = new MySqlParameter("NewDeviceGroup",MySqlDbType.VarChar,3);
param4.Value = newDeviceGroup;
MySqlParameter param5 = new MySqlParameter("NewChangeInDate",MySqlDbType.Date);
param5.Value = changeInDate;
MySqlParameter param6 = new MySqlParameter("NewValidYear",MySqlDbType.Int32,11);
param6.Value = validYear;
int iRes = db.ExecSP("spm_HousingManage_RegularInfo_Instruments_GroupExchange",param1,
param2,param3,param4,param5,param6);
if(iRes != 0)
lastError = "Execute group exchange fail.";
return iRes == 0;
}
public int ExecSP(string spName,params Object[] sqlParams){
int iCount = 0;
try {
if(! this.isBindTrans)
this.transConn.Open();
MySqlCommand sqlCmd ;
if (trans != null)
sqlCmd = new MySqlCommand(spName,this.transConn,trans);
else
sqlCmd = new MySqlCommand(spName,this.transConn);
sqlCmd.CommandType = CommandType.StoredProcedure;
if( sqlParams != null && sqlParams.Length > 0 ){
for(int i = 0; i < sqlParams.Length; i++)
sqlCmd.Parameters.Add(sqlParams[i]);
}
iCount = sqlCmd.ExecuteNonQuery();
sqlCmd.Dispose();
}
catch( MySqlException e ) {
ErrorLog.SysWrite(e.Source,e.Message,"存储过程:" + spName);
return -1;
}
finally{
if(! this.isBindTrans)
this.transConn.Close();
}
return iCount;
}