接口已经给了
存储过程名字:   basec2c.GetUserInfo
                  输入:   in_acc_nbr varchar2
                  输出:   username  varchar2
                         address    varchar2
                  用户:   user
                  密码    pass
                  服务器:IP  192.168.1.1  1521
                  本机IP    192.168.1.19
                  网关:      192.168.1.254

解决方案 »

  1.   

    http://dev.csdn.net/develop/article/11/11663.shtmhttp://dev.csdn.net/develop/article/7/7762.shtm
      

  2.   

    能给个具体的例子吗?实在没时间写
    [email protected]
    忙着一个BS的系统,要交差了,还差好多又要考试。。
      

  3.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=7839
    怎么用VC来调用存储过程??
      

  4.   

    try
    {
    m_pConnection.CreateInstance(__uuidof(Connection));
    CString conn;
    conn.Format("driver={SQL Server};Server=***;UID=***;PWD=***;DATABASE=***");
    m_pConnection->Open(_bstr_t(conn),"","",adModeUnknown); _RecordsetPtr m_pRecordset;
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    CString sql;
    sql.Format("select * from chat_room");
    m_pRecordset->Open(_variant_t(sql),(IDispatch *)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
    while( !m_pRecordset->adoEOF )
    {
    _variant_t roomid = m_pRecordset->GetCollect("id");
    _variant_t roomname = m_pRecordset->GetCollect("roomname");
    CString tmp;
    tmp.Format("%d.%s",roomid.iVal,(char *)(_bstr_t)roomname);
    m_room.AddString(tmp);
    m_pRecordset->MoveNext();
    }
    m_pRecordset->Close();
    _variant_t RecordsAffected;
    sql.Format("exec chat '%s','me','%s','%s',1",phone,m_msgBody,srcphone,province);
    m_pConnection->Execute( _bstr_t(sql), &RecordsAffected,adCmdUnknown);
    }
    catch(_com_error e)
    {
    MessageBox("数据库连接失败");
    exit(0);
    }
      

  5.   

    可以执行以下SQL语句:(SQL Server)
    declare @user varchar2,@addr varchar2
    exec basec2c.GetUserInfo 'in_acc_nbr',@username = @user output,@address = @addr output
    select @user as user,@addr as addr然后就跟结果集一样取user和addr字段就可以了。Oracle数据库以上语句可能要改一下。
      

  6.   

    回复人: laiyiling(最熟悉的陌生人) 
    =======
    你怎么每次都在我前面啊,我抢不过你啊!
      

  7.   

    读存储过程一定用用ADO吗?我不会用ADO。
    一般都是用CDatabase和CRecordset的方法。
    那位高人能说说?
      

  8.   

    我在查询分析器里能执行下面的语句,可在程序里就不行。
    declare @user varchar(50),@addr varchar(50) 
    execute P_STDX_119_GetUserInfo '2807998',@username = @user output,@address = @addr output 
    select @user as username,@addr as addr这是为什么?
      

  9.   

    程序如下:
    CDatabase m_db;
    m_db.Open("LocalServer",FALSE,FALSE,"ODBC;DSN=server;UID=sa;PWD=sa",TRUE);
    CRecordset  ResultSet(&m_db);
    try
    {
    ResultSet.Open(CRecordset::forwardOnly,
      _T("declare @user varchar(50),@addr varchar(50) execute P_STDX_119_GetUserInfo '2807998',@username = @user output,@address = @addr output select @user as username,@addr as addr"));
    }
    catch(CDBException* e)
    {
       AfxMessageBox("读取结果错误!" + e->m_strError);
       return;
    } while(!ResultSet.IsEOF())
    {
    CString strUser="",strAddr="";
    int nReceived=0;
    ResultSet.GetFieldValue("username",strUser);
    ResultSet.GetFieldValue("addr",strAddr);
    ResultSet.MoveNext();
    }
    ResultSet.Close();
    m_db.Close( );
      

  10.   

    试试
    ResultSet.GetFieldValue(0,strUser);
    ResultSet.GetFieldValue(1,strAddr);
      

  11.   

    可是在ResultSet.Open的时候就已经出错了。
      

  12.   

    BOOL CRecordset::Open( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = none );
    throw( CDBException, CMemoryException );关于参数lpszSQL:A string pointer containing one of the following: A NULL pointer.
    The name of a table.
    An SQL SELECT statement (optionally with an SQL WHERE or ORDER BY clause). 
    A CALL statement specifying the name of a predefined query (stored procedure). Be careful that you do not insert whitespace between the curly brace and the CALL keyword.
    For more information about this string, see the table and the discussion of ClassWizard’s role under Res.Note   The order of the columns in your result set must match the order of the RFX or Bulk RFX function calls in your DoFieldExchange or DoBulkFieldExchange function override.看来ResultSet.Open不支持这些SQL语句。ADO是可以的。
      

  13.   

    to sohou(唐sir) 
    呵呵!不是抢啊!我只是泡在里面的时间多点而已!
      

  14.   

    http://community.csdn.net/Expert/topic/3108/3108440.xml?temp=.7951776