weih
January 31st, 2001, 03:01 AM
I cant get any output parameters to work. I use CreateParameter on the _CommandPtr and append them all to the parameters collection ... values get passed in but output parameters come back as VT_NULL. I know the stored proc is fine coz it works when tested in the iSQLw environment (SQL Server).
Here is my code:
_CommandPtr pCmd;
_ParameterPtr pParam;
HRESULT hr;
try{
if(FAILED(hr=pCmd.CreateInstance(__uuidof(Command))))
_com_issue_error(hr);
pCmd->putref_ActiveConnection(pCnn);
pCmd->put_CommandText(_bstr_t("get_client_info2"));
pCmd->put_CommandType(adCmdStoredProc);
pParam=pCmd->CreateParameter(_bstr_t("@lSubjectID"),adInteger,
adParamInput,sizeof(long),_bstr_t(lsubjectID));
pCmd->Parameters->Append(pParam);
pParam=pCmd->CreateParameter(_bstr_t("@lSubjectNo"),adInteger,
adParamInput,sizeof(long),_bstr_t(lSubjectNo));
pCmd->Parameters->Append(pParam);
pParam=pCmd->CreateParameter(_bstr_t("@clientage"),adInteger,
adParamOutput,sizeof(long),_bstr_t("lsubjectno"));
pCmd->Parameters->Append(pParam);
pParam=pCmd->CreateParameter(_bstr_t("@clientsex"),adTinyInt,
adParamOutput,sizeof(BYTE),_bstr_t(pclient->m_nSex));
pCmd->Parameters->Append(pParam);
pCmd->Execute(NULL,NULL,adCmdStoredProc);
pParam = pCmd->Parameters->GetItem("@clientage");
temp = pParam->GetValue();
if(temp.vt != VT_NULL)
pclient->m_nAge = temp;
pParam = pCmd->Parameters->GetItem("@clientsex");
}
catch(_com_error &e)
{
dump_com_error(e);
return FALSE;
}
I never step into
"pclient->m_nAge = temp;"
Who can help me?
Here is my code:
_CommandPtr pCmd;
_ParameterPtr pParam;
HRESULT hr;
try{
if(FAILED(hr=pCmd.CreateInstance(__uuidof(Command))))
_com_issue_error(hr);
pCmd->putref_ActiveConnection(pCnn);
pCmd->put_CommandText(_bstr_t("get_client_info2"));
pCmd->put_CommandType(adCmdStoredProc);
pParam=pCmd->CreateParameter(_bstr_t("@lSubjectID"),adInteger,
adParamInput,sizeof(long),_bstr_t(lsubjectID));
pCmd->Parameters->Append(pParam);
pParam=pCmd->CreateParameter(_bstr_t("@lSubjectNo"),adInteger,
adParamInput,sizeof(long),_bstr_t(lSubjectNo));
pCmd->Parameters->Append(pParam);
pParam=pCmd->CreateParameter(_bstr_t("@clientage"),adInteger,
adParamOutput,sizeof(long),_bstr_t("lsubjectno"));
pCmd->Parameters->Append(pParam);
pParam=pCmd->CreateParameter(_bstr_t("@clientsex"),adTinyInt,
adParamOutput,sizeof(BYTE),_bstr_t(pclient->m_nSex));
pCmd->Parameters->Append(pParam);
pCmd->Execute(NULL,NULL,adCmdStoredProc);
pParam = pCmd->Parameters->GetItem("@clientage");
temp = pParam->GetValue();
if(temp.vt != VT_NULL)
pclient->m_nAge = temp;
pParam = pCmd->Parameters->GetItem("@clientsex");
}
catch(_com_error &e)
{
dump_com_error(e);
return FALSE;
}
I never step into
"pclient->m_nAge = temp;"
Who can help me?