_CommandPtr pCommand = NULL; // Command Object
_ParameterPtr inParam=NULL;
_ParameterPtr outParam=NULL;
try
{
// 创建 ADODB::_CommandPtr对象
if( FAILED(pCommand.CreateInstance(__uuidof(Command))))
{
CString ss;
ss = _T("创建 ADODB::_CommandPtr对象失败!") ;
//WriteErrToLog( ss );
return FALSE;
}
pCommand->ActiveConnection = m_pCon; // 绑定连接
pCommand->CommandText = _T("proc_GetPackageCfg");//存储过程名
pCommand->PutCommandType(adCmdStoredProc);
_variant_t varDevID;
_variant_t varDevCfg;
// 以下绑定参数
varDevID = deviceID;
inParam = pCommand->CreateParameter
(
_bstr_t(_T("DEVICE_ID")), // 参数名称
adUnsignedBigInt,
adParamInput,
sizeof(UINT64),
varDevID
);
pCommand->Parameters->Append(inParam);
outParam = pCommand->CreateParameter
(
_bstr_t(_T("packagecfg")), // 参数名称
adVarChar,
adParamOutput,
8000,
varDevCfg
);
pCommand->Parameters->Append(outParam);
// 执行清库的存储过程
pCommand->Execute( NULL, NULL, adCmdStoredProc );
//通过参数返回值
USES_CONVERSION;
sDevCfg = CW2CT( pCommand->Parameters->GetItem("packagecfg")->GetValue().bstrVal );
// 删除刚刚添加的Parameter,防止对别的存储过程的调用产生影响
for(long iIndex = 0; iIndex<pCommand->Parameters->Count; iIndex++)
{
pCommand->Parameters->GetItem(iIndex).Release();
}
//pCommand->Parameters->Delete(_T("DaysOfSaveData"));
pCommand->Parameters->Refresh();
//int i = pCommand->Parameters->Count;
//TRACE(_T("param num %d\n"),i);
}
catch(_com_error e)
{
CString ss;
ss = _T("发生异常,错误信息:" );
ss += GetLastErr();
//WriteErrToLog( ss );
return FALSE;
}
ADO 执行存储过程,取字符串类型的返回值
最新推荐文章于 2018-10-27 21:31:18 发布