用VC的ADO来调用存储过程的有关问题

用VC的ADO来调用存储过程的问题
我的代码的意思是通过user_id查询user_passwd

存储过程为:
----------------------查询某个用户是否存在----------------------
create procedure testuserIfExist (@user_id varchar(10), @user_passwd varchar(8) out)
as
begin
select user_passwd from "user" where user_id=@user_id
end


ADO连接数据库已经成功,但是传参时候的出现错误,在下面的紫色的部分是错误的原因
HRESULT hr = m_pCmd.CreateInstance(__uuidof(Command));
if(FAILED(hr))
{
AfxMessageBox("NewNetDatabase()中创建_CommandPtr对象失败");
return;
}

CString user_passwd("");
try
{
m_pParam = m_pCmd->CreateParameter("user_id",adVarChar, adParamInput,
10,_variant_t("0000000001"));
m_pCmd->Parameters->Append(m_pParam);
m_pParam = m_pCmd->CreateParameter("user_passwd",adVarChar, adParamOutput,
8, _variant_t(user_passwd));
m_pCmd->Parameters->Append(m_pParam);

m_pCmd->CommandText=_bstr_t("testuserIfExist");//存储过程的名称
m_pCmd->ActiveConnection = m_pConn1;//需要使用的ADO连接
m_pCmd->CommandType=adCmdStoredProc;
m_pCmd->Parameters->Refresh();
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;
// m_pRecordSet=m_pCmd->Execute(&vNULL, &vNULL, adCmdStoredProc);
// _variant_t user_passwd = m_pRecordSet->GetCollect("user_passwd");
m_pCmd->Execute(&vNULL, &vNULL, adCmdStoredProc);
_variant_t user_passwd = m_pRecordSet->GetCollect("user_passwd");
//  user_passwd=(long)m_pCmd->Parameters->GetItem("user_passwd")->GetValue();//通过参数返回值
//  m_pCmd.Detach(); 
}
catch (_com_error* e)
{
AfxMessageBox("Error!!!");
return;
}

AfxMessageBox(user_passwd);
------解决方案--------------------
异常捕获改成看是什么错误
try
{
//你的ADO代码
}
catch (_com_error& e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息%s"), 
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
}