有人用过吗?能否指导下我?多谢

解决方案 »

  1.   

    给段vc的ado代码,可以参考一下
    _CommandPtr     pCmdChange  = NULL; pCmdChange.CreateInstance(__uuidof(Command));
    pCmdChange->CommandType = adCmdStoredProc;
    pCmdChange->CommandText = "pkg_test.get";

    pCmdChange->ActiveConnection = theApp.m_pConnection; m_pRecordset->CursorType=adOpenStatic;
    m_pRecordset->LockType=adLockPessimistic;
    m_pRecordset = pCmdChange->Execute(NULL,NULL,adCmdStoredProc); 
      

  2.   

    BCB里有专门的执行对象。TADOStoredProc *ADOStoredProc1;用TADOCommand 也可以的。
      

  3.   

    那也不要紧啊。一定有提供的数据库访问对象的啊。即使没有直接执行存储过程的对象,
    也至少会有执行command的对象。你查一下看看。
      

  4.   

    使用VC调用ORACLE的存储过程并返回记录
    m_pConnection.CreateInstance("ADODB.Connection");
    /******************连接数据库********************/
    try
    {
    m_pConnection->ConnectionTimeout = 8;
    //连接SQL SERVER
    //m_pConnection->Open("Driver=SQL Server;Database=test;Server=127.0.0.1;UID=sa;PWD=;","","",adModeUnknown);
    //连接ACCESS2000
    //m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=userinfo.mdb","","",adModeUnknown);
    //连接到oracleMSDAORA oraoledb.oracle
    m_pConnection->Open("Provider=oraoledb.oracle;Data Source=ep;User ID=zongdui;Password=zongdui;PLSQLRSet=1","","",adModeUnknown); }
    catch(_com_error e)///捕捉异常
    {
    AfxMessageBox("数据库连接失败!");
    return FALSE;

    /**********************************************/上面是连接数据库,PLSQLRSet=1这个一定要有。 m_bNewUser = FALSE;
    m_pRecordset.CreateInstance("ADODB.Recordset");
    try
    {
    //m_pRecordset->Open("SELECT name as username,old,photo as photo1 FROM test",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockPessimistic,adCmdText);
    _CommandPtr     pCmdChange  = NULL;
    // _ParameterPtr pprmByRoyalty = NULL; pCmdChange.CreateInstance(__uuidof(Command));
    pCmdChange->CommandType = adCmdStoredProc;
    pCmdChange->CommandText = "pkg_test.get";


    //Define Integer/variant.
    // pprmByRoyalty.CreateInstance(__uuidof(Parameter));
    // VARIANT vtRoyalty;
    // vtRoyalty.vt = VT_I2;
    // vtRoyalty.iVal = 20;
    // pprmByRoyalty = pCmdChange->CreateParameter("param1",adInteger,adParamInput,sizeof(int),vtRoyalty);
    // pCmdChange->Parameters->Append(pprmByRoyalty); // pprmByRoyalty->Value  = vtRoyalty;
               
          //Create Recordset by executing the command
    pCmdChange->ActiveConnection = theApp.m_pConnection; //Create Recordset by executing the command
    m_pRecordset->CursorType=adOpenStatic;
    m_pRecordset->LockType=adLockPessimistic;
    m_pRecordset = pCmdChange->Execute(NULL,NULL,adCmdStoredProc); 
    //m_pRecordset->Open("{CALL (?{20})}",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockPessimistic,adCmdStoredProc);
    /**/
    }
    catch (_com_error e)
    {
    AfxMessageBox(e.Description());
    return FALSE;
    }这样就可以得到pkgtest.get返回的记录集
      

  5.   

    BCB里有TADOCommand 控键可以的。专门用来存储过程之类
      

  6.   

    Windows下的BCB有组件可以完成,VC可以调用COM接口来实现。但unix下就不懂了。
      

  7.   

    EXEC SQL EXECUTE
    BEGIN
    ……
    procedures.get(:var);
    END;
    END_EXEC;
      

  8.   

    Unix是不太懂。不过我还没见过哪个开发工具不提供访问数据库的方法。好好找找吧。