存储过程:create or replace procedure psms_SysAppMain_test
( data_in in varchar2 ,
data_out out varchar2 )
as......
//已经建立连接
_CommandPtr cmmd;
_ParameterPtr param1,param2;
HRESULT hr = cmmd.CreateInstance("ADODB.Command");
if(FAILED(hr))
{
AfxMessageBox("NewNetDatabase()中创建_CommandPtr对象失败");
return 0;
}
param1.CreateInstance("ADODB.Parameter");
_variant_t vv_in,vv_out;
CString aa="ttttt";
vv_in=(_variant_t) aa;//类型转换
// 存储过程参数设置
param1 = cmmd->CreateParameter("data_in",adVarChar, adParamInput,
aa.getlength(),vv_in);
cmmd->Parameters->Append(param1);//设置传入参数
param2 = cmmd->CreateParameter("data_out",adVarChar, adParamOutput,
30, vv_out);
cmmd->Parameters->Append(param2);//设置返回参数
//存储过程参数设置结束
cmmd->CommandText=_bstr_t("psms_SysAppMain_test");//存储过程的名称
cmmd->ActiveConnection =pConnection.GetConnection();//指明需要使用的ADO连接
cmmd->CommandType=adCmdStoredProc;
try{
cmmd->Execute(NULL, NULL, adCmdStoredProc);//调用存储过程
}catch (_com_error e)
{
TRACE(_T(":(调用存储过程发生错误: %s\n"), e.ErrorMessage());
AfxMessageBox(e.ErrorMessage());
return FALSE;
}
vv_out=(_variant_t)cmmd->Parameters->GetItem(tt)->GetValue();//通过参数返回值
cmmd.Detach();
我调用不带参数的存储过程可以运行成功,可是一带参数,就报“IDispatch error #3092”错误!
请问是否是我参数设置问题?
---------------
用e.decripation看看具体错误。
改为
cmmd->CommandText=_bstr_t("{psms_SysAppMain_test(?, ?)}");cmmd->Execute(NULL, NULL, adCmdStoredProc);
改为
cmmd->Execute(NULL, NULL, adCmdText);
我检查了一下以前的代码,和你的操作一样,只是多了一个返回值的参数,是正常的。