程序端给出的参数为
“/北京“
ADO连接字符串 charSet = gbk
服务器数据库 采用 gbk字符集
同一个软件 在不同客户机上运行 当调用存储过程的时候 传入参数 一些是正常的 另外一些就报这个 错误了
MYSQL Incorrect number of arguments for PROCEDURE tymes.mail_Add; expected 1, got 5
“/北京“
ADO连接字符串 charSet = gbk
服务器数据库 采用 gbk字符集
同一个软件 在不同客户机上运行 当调用存储过程的时候 传入参数 一些是正常的 另外一些就报这个 错误了
MYSQL Incorrect number of arguments for PROCEDURE tymes.mail_Add; expected 1, got 5
这个貌似是传入的参数个数不对
问题猜测:
进入Mysql服务器 修改存储过程 从第四个参数 逐一递减 报错为 3 - 7 / 2 - 6/ 1 -5
问题预测:服务器把第一个参数"中文参数" 分解为了5个参数
现在已经解除问题:
原因不明;
方法为 调整语句的执行顺序。
HRESULT hr = cmmd.CreateInstance(__uuidof(Command));
if(FAILED(hr))
{
AfxMessageBox("创建_CommandPtr对象失败");
return 0;
}
cmmd->Parameters->Refresh();
_ParameterPtr param;
param = cmmd->CreateParameter("",adVarChar, adParamInput,len+1, _variant_t(m_CountDepartment));
cmmd->Parameters->Append(param);
cmmd->CommandText=_bstr_t("evaluate_count");//存储过程的名称
cmmd->ActiveConnection = m_pConnection;//需要使用的ADO连接
cmmd->CommandType=adCmdStoredProc;
cmmd->Execute(NULL, NULL, adCmdStoredProc);
cmmd.Detach();
//----------------------------------------------------------------------------------------_CommandPtr m_pCommand;//初始化命令对象
m_pCommand.CreateInstance("ADODB.Command");//创建命令实例
m_pCommand->ActiveConnection=m_pConnection;//设置命令对象的连接m_pCommand->CommandText = _bstr_t("evaluate_count");
m_pCommand->CommandType=adCmdStoredProc;
m_pCommand->Parameters->Refresh();_ParameterPtr ParametV;
ParametV.CreateInstance(__uuidof(Parameter));
ParametV=m_pCommand->CreateParameter("",adVarChar,adParamInput,len+1,_variant_t(m_CountDepartment));
m_pCommand->Parameters->Append(ParametV);//执行存储过程
m_pRecordset = m_pCommand->Execute(Null,Null,adCmdStoredProc);
m_pRecordset.Detach();//-------------------------------------------------------------------------
以上两段代什么什么吗本质的区别 从而导致 在系统版本较老的情况下 只有代码一正常运行
了解的加qq1615128878