在vc中通过ODBC(不要ADO)调用
CREATE PROCEDURE Test
@Para1 int ,
@Para2 int ,
@Para3 int ,
@Ret int OUTPUT
 AS
insert into test1 values (@Para1,@Para2,@Para3)
set @Ret = @Para1;
GO
在vc中怎么编码?请给出代码谢谢了

解决方案 »

  1.   

    CDatabase * pDatabase = new CDatabase;         pDatabase->OpenEx("DSN=ODBCName;UID=***;PWD=***", 0 ); SQL.Format("exec Test %d,%d,%d,%d",Time0, Time1, Time2, Time3); pDatabase->ExecuteSQL( SQL ); pDatabase->Close();
    delete pDatabase;//使用时应加上异常处理
      

  2.   

    CDatabase * pDatabase = new CDatabase;         pDatabase->OpenEx("DSN=ODBCName;UID=***;PWD=***", 0 );
        
             CRecordset rs( pDatabase ); SQL.Format("{Test %d,%d,%d,%d}",Time0, Time1, Time2, Time3);         rs.Open( CRecordset::dynamic, SQL, CRecordset::none );         rs.GetFieldValue( (long)0, strReturn );         rs.Close(); pDatabase->Close();
    delete pDatabase;
      

  3.   

    你把我这个代码COPY过去看一下,ODBC有点麻烦,输入输出参数都有
    int SimpleGetAccordOtherprocedure(CDatabase *dbCust,char *spstring,char *resultp,int *resultplen,int *ireturn,int *nIndex,char *sUserTel,char *sOtherId,char *sOtherTel,char *sOtherSex,char *sOtherOld)
    {
    char spstm[512];
    int ret;
    HSTMT hStmt;
    int totallen=0;
    SDWORD cbIn1=SQL_NTS, cbIn2=SQL_NTS, cbOut=1024,cbRet=0; ret=SQLAllocStmt(dbCust->m_hdbc, &hStmt);
    if(ret!=SQL_SUCCESS && ret!=SQL_SUCCESS_WITH_INFO)
    return(-3503); if(sizeof(spstm)<=strlen(spstring))
    return(-3504);
    strcpy(spstm,spstring);
    ret=SQLPrepare(hStmt, (UCHAR *)spstm, SQL_NTS);
    if(ret!=SQL_SUCCESS && ret!=SQL_SUCCESS_WITH_INFO)
    return(-3504); ret=SQLBindParameter(hStmt,1,SQL_PARAM_OUTPUT,SQL_C_SSHORT,SQL_INTEGER, 0, 0, ireturn, 0,&cbRet);
    ret=SQLBindParameter(hStmt,2,SQL_PARAM_INPUT,SQL_C_SSHORT,SQL_INTEGER,0, 0, nIndex, 0, &cbIn1);
    ret=SQLBindParameter(hStmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, DBACCESS_MAXPARAMLEN, 0, sUserTel, DBACCESS_MAXPARAMLEN,&cbIn1);
    ret=SQLBindParameter(hStmt,4,SQL_PARAM_OUTPUT,SQL_C_CHAR,SQL_CHAR, DBACCESS_MAXPARAMLEN, 0, sOtherId, DBACCESS_MAXPARAMLEN,&cbIn2);
    ret=SQLBindParameter(hStmt,5,SQL_PARAM_OUTPUT,SQL_C_CHAR,SQL_CHAR, DBACCESS_MAXPARAMLEN, 0, sOtherTel, DBACCESS_MAXPARAMLEN,&cbIn1);
    ret=SQLBindParameter(hStmt,6,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, DBACCESS_MAXPARAMLEN, 0, sOtherSex, DBACCESS_MAXPARAMLEN,&cbIn1);
    ret=SQLBindParameter(hStmt,7,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, DBACCESS_MAXPARAMLEN, 0, sOtherOld, DBACCESS_MAXPARAMLEN,&cbIn1); ret=SQLExecute(hStmt); if(ret!=SQL_SUCCESS && ret!=SQL_SUCCESS_WITH_INFO)
    return(-3505); // printf("Error in execute!\n");
        ret=TBSDBProcWU(hStmt,resultp,resultplen);
        return ret;
    }