VC中如何调用oracle中的存储过程?

解决方案 »

  1.   

    CDatabase * pDatabase = new CDatabase; TRY
    {
    pDatabase->OpenEx( _T("DSN=ODBCName;UID=***; PWD=***;"), CDatabase::noOdbcDialog);
    }
    CATCH (CDBException, e)
    {
    delete pDatabase;
    return;
    }END_CATCH SQL.Format("exec sp_ProcessName"); 
    pDatabase->ExecuteSQL(SQL); pDatabase->Close();
    delete pDatabase;
    }
    调用存储过程ADO:_ConnectionPtr pConn;
    pConn.CreateInstance(__uuidof(Connection));
    pConn->Open(_bstr_t(_T("Provider=SQLOLEDB.1;Password=\"\";")
    _T("Persist Security Info=True;User ID=sa;")
    _T("Initial Catalog=pubs;Data Source=earthdog")), 
    _bstr_t(_T("")), _bstr_t(_T("")), adConnectUnspecified);_CommandPtr pCmd;
    pCmd.CoCreateInstance(__uuidof(Command));
    pCmd->ActiveConnection = pConn;
    _variant_t var = _T("test");
    pCmd->Execute(var, vtMissing, adCmdStoredProc);
                                  ~~~~~~~~~~~~~~~由这个参数来指明是存储过程
      

  2.   

    http://www.vckbase.com/article/mfc_database/0152692838.htm
      

  3.   

    我采用了ADO,这是我的代码:(省略了实始化)
    m_commandptr->Parameters->Append(m_commandptr->CreateParameter("code",adBSTR,adParamInput,6,param[0]));
    m_commandptr->Parameters->Append(m_commandptr->CreateParameter("code",adBSTR,adParamInput,6,param[1]));
    m_commandptr->Parameters->Append(m_commandptr->CreateParameter("code",adBSTR,adParamInput,6,param[2]));
    m_commandptr->CommandText="{call yj.prcpcquerysellcard(?,?,?)}";
    _variant_t filed;
    m_commandptr->CommandType =adCmdUnknown;
    m_pUserSet=m_commandptr-> Execute( NULL,NULL,adCmdUnknown);