我用OLE DB执行Oracle中的存储过程时会发生:“多步 OLE DB 操作产生错误。请检查每个 OLE DB 状态值。没有工作被完成。”的错误。请问如何解决?
关键代码如下:
………………
prs = new CCommand<CManualAccessor, CRowset, CMultipleResults>;
prs->Create(m_session, strCall);//strCall 如“{ call test.getall }"形式
prs->Prepare(1);
………………
CDBPropSet propset(DBPROPSET_ROWSET);//DBSCHEMA_PROCEDURES
if (m_nDbType == DB_TYPE_ORACLE)
{//Oracle要求要加上这句话
propset.AddProperty(ORAPROP_PLSQLRSet, true);
}if (prs->Open(&propset, NULL, false) != S_OK)
{
GetLastError(m_szLastErrorDesc);//到这里出错,m_szLastErrorDesc为上面提到的信息。
………………

解决方案 »

  1.   

    prs->Open()执行完之后记得prs->Close();
      

  2.   

    产生这个错误一般是因为你的OLE DB操作有问题,看看你是否少加了某个参数,或者在打开数据源是某个属性没有设置正确,当然如果数据库不支持的某个语句你执行了,也会产生这个错误。总之你要找一下其他地方的操作是否正确,不要局限在上面你写的那些代码本身。最后祝你好运!