如题,求大虾帮忙解决!!!
存储过程是封装起来的,看不到源码,我调存储过程的代码如下:
_variant_t vt_xm, vt_xb, vt_datetime, vNULL;
int rtn;
vNULL.vt = VT_NULL;
rtn = 0;::CoInitialize(NULL);try
{
_CommandPtr m_pCmd;
m_pCmd.CreateInstance("ADODB.Command");
m_pCmd->ActiveConnection = m_pOraConn;
m_pCmd->CommandText = "insert_temp";
m_pCmd->CommandType = adCmdStoredProc;
m_pCmd->CommandTimeout = 0;
m_pCmd->Properties->GetItem("SPPrmsLOB")->PutValue(_variant_t(VARIANT_TRUE, VT_BOOL));

_ParameterPtr m_pParamXm;
m_pParamXm.CreateInstance("ADODB.Parameter");
m_pParamXm = m_pCmd->CreateParameter("xm", adVarChar, adParamInput, 20, vt_xm);
m_pCmd->Parameters->Append(m_pParamXm);

_ParameterPtr m_pParamXb;
m_pParamXb.CreateInstance("ADODB.Parameter");
m_pParamXb= m_pCmd->CreateParameter("xb", adInteger, adParamInput, 16, vt_xb);
m_pCmd->Parameters->Append(m_pParamXb);

_ParameterPtr m_pParamDateTime;
m_pParamDateTime.CreateInstance("ADODB.Parameter");
m_pParamDateTime = m_pCmd->CreateParameter("dt", adDBTimeStamp, adParamInput, 32, vt_datetime);
m_pCmd->Parameters->Append(m_pParamDateTime); //图片1
if (m_File.Open((LPCTSTR)filepath, CFile::modeRead | CFile::typeBinary) != 0)
{
long datalength, index;
BYTE *filedata = NULL;
_variant_t varChunk;
SAFEARRAY *psa = NULL;
SAFEARRAYBOUND rgsabound[1];
datalength = m_File.GetLength();
filedata = new BYTE[datalength];
m_File.Read(filedata, datalength);
m_File.Close();
rgsabound[0].cElements = datalength;
rgsabound[0].lLbound = 0;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (index = 0; index < datalength; index++)
{
SafeArrayPutElement(psa, &index, &filedata[index]);
}
varChunk.vt = VT_ARRAY | VT_UI1;
varChunk.parray = psa;
_ParameterPtr m_pParamPicture1;
m_pParamPicture1.CreateInstance("ADODB.Parameter");
m_pParamPicture1->Name = "tp1";
m_pParamPicture1->Type = adLongVarBinary;
m_pParamPicture1->Direction = adParamInput;
m_pParamPicture1->Size = datalength;
m_pCmd->Parameters->Append(m_pParamPicture1);
m_pParamPicture1->AppendChunk(varChunk);
delete filedata;
filedata = NULL;
psa = NULL;
}
//图片2,可以为空
_ParameterPtr m_pParamPicture2;
m_pParamPicture2.CreateInstance("ADODB.Parameter");
m_pParamPicture2->Name = "ZJWJ2";
m_pParamPicture2->Type = adLongVarBinary;
m_pParamPicture2->Direction = adParamInput;
m_pParamPicture2->Size = 0;
m_pCmd->Parameters->Append(m_pParamPicture2);
m_pParamPicture2->AppendChunk(vNULL);
//返回值
_ParameterPtr m_pParamRtn;
m_pParamRtn.CreateInstance("ADODB.Parameter");
m_pParamRtn= m_pCmd->CreateParameter("ZXJG", adInteger, adParamOutput, sizeof(int), (long)rtn);
m_pCmd->Parameters->Append(m_pParamRtn);
//执行存储过程
m_pCmd->Execute(NULL, NULL, adCmdStoredProc);
rtn = (long)m_pCmd->Parameters->GetItem("ZXJG")->GetValue();
}
catch(_com_error e) //捕捉异常
{
AfxMessageBox(e.ErrorMessage());
}只传入图片1,图片2保持为空值,直接给图片2传递vNULL,报错
在线等,急!!!