_CommandPtr m_pCommand;
//执行储存过程
CString cvar1=strHPHM,cvar2=strHPZL,cvar3=strZXSJ,cvar4=m_path;
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->Parameters->Refresh();
m_pCommand->ActiveConnection=db.GetActiveConnection();
m_pCommand->CommandType=adCmdStoredProc;
m_pCommand->CommandText=_bstr_t("getftppath");
_variant_t vvar1,vvar2,vvar3,vvar4;vvar1=_variant_t(_bstr_t(cvar1));
vvar2=_variant_t(_bstr_t(cvar2));
vvar3=_variant_t(cvar3);
vvar4=_variant_t(cvar4);_ParameterPtr mp_var1,mp_var2,mp_var3,mp_var4;
mp_var1.CreateInstance(__uuidof(Parameter));
mp_var2.CreateInstance(__uuidof(Parameter));
mp_var3.CreateInstance(__uuidof(Parameter));
mp_var4.CreateInstance(__uuidof(Parameter));
mp_var1=m_pCommand->CreateParameter
(
_bstr_t("HPHM"),
adVarChar,
adParamInput,
sizeof(char)*1024,
vvar1
);
m_pCommand->Parameters->Append(mp_var1);
mp_var2=m_pCommand->CreateParameter
(
_bstr_t("HPZL"),
adVarChar,
adParamInput,
sizeof(char)*1024,
vvar2
);
m_pCommand->Parameters->Append(mp_var2);
mp_var3=m_pCommand->CreateParameter
(
_bstr_t("ZXSJ"),
adVarChar,
adParamInput,
sizeof(char)*1024,
vvar3
);
m_pCommand->Parameters->Append(mp_var3);
mp_var4=m_pCommand->CreateParameter
(
_bstr_t("FTPH"),
adVarChar,
adParamOutput,
sizeof(char)*1024,
vvar4
);
m_pCommand->Parameters->Append(mp_var4); try
{
m_pCommand->Execute(NULL,NULL,adCmdStoredProc);
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
return ;
}
m_pCommand->Parameters->GetItem("FTPH")->GetValue();当我执行上面的代码时,发生错误,原文如下:数据记录集错误
代码=80040e14
代码含义=IDispatch error #3092
源=Microoft OLE DB Provider for Oracle
描述=ORA-06550:line 1,column 7:
PLS_00201:identifier 'GETFTPPATH' must be declared
ORA_06550:line 1,column 7:
PL/SQL:Statement ignored请高手指点一下。是什么原因。不够,还可以加分!
//执行储存过程
CString cvar1=strHPHM,cvar2=strHPZL,cvar3=strZXSJ,cvar4=m_path;
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->Parameters->Refresh();
m_pCommand->ActiveConnection=db.GetActiveConnection();
m_pCommand->CommandType=adCmdStoredProc;
m_pCommand->CommandText=_bstr_t("getftppath");
_variant_t vvar1,vvar2,vvar3,vvar4;vvar1=_variant_t(_bstr_t(cvar1));
vvar2=_variant_t(_bstr_t(cvar2));
vvar3=_variant_t(cvar3);
vvar4=_variant_t(cvar4);_ParameterPtr mp_var1,mp_var2,mp_var3,mp_var4;
mp_var1.CreateInstance(__uuidof(Parameter));
mp_var2.CreateInstance(__uuidof(Parameter));
mp_var3.CreateInstance(__uuidof(Parameter));
mp_var4.CreateInstance(__uuidof(Parameter));
mp_var1=m_pCommand->CreateParameter
(
_bstr_t("HPHM"),
adVarChar,
adParamInput,
sizeof(char)*1024,
vvar1
);
m_pCommand->Parameters->Append(mp_var1);
mp_var2=m_pCommand->CreateParameter
(
_bstr_t("HPZL"),
adVarChar,
adParamInput,
sizeof(char)*1024,
vvar2
);
m_pCommand->Parameters->Append(mp_var2);
mp_var3=m_pCommand->CreateParameter
(
_bstr_t("ZXSJ"),
adVarChar,
adParamInput,
sizeof(char)*1024,
vvar3
);
m_pCommand->Parameters->Append(mp_var3);
mp_var4=m_pCommand->CreateParameter
(
_bstr_t("FTPH"),
adVarChar,
adParamOutput,
sizeof(char)*1024,
vvar4
);
m_pCommand->Parameters->Append(mp_var4); try
{
m_pCommand->Execute(NULL,NULL,adCmdStoredProc);
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
return ;
}
m_pCommand->Parameters->GetItem("FTPH")->GetValue();当我执行上面的代码时,发生错误,原文如下:数据记录集错误
代码=80040e14
代码含义=IDispatch error #3092
源=Microoft OLE DB Provider for Oracle
描述=ORA-06550:line 1,column 7:
PLS_00201:identifier 'GETFTPPATH' must be declared
ORA_06550:line 1,column 7:
PL/SQL:Statement ignored请高手指点一下。是什么原因。不够,还可以加分!
问题已解决!
原来是连接数据库的用户名没有权限调用这个存储过程。