使用数组可以解决
text *sql = (text *) "INSERT INTO emp VALUES (:empno, :ename, :sal, :job ) " ;
int empno = 100 ;
char ename[] = "Wqr" ;
float sal = 99.8 ;
char job[] = "program" ;
OCIBind *bndhp[4] ;
checkerr( m_dbp->m_errhp , OCIHandleAlloc( (dvoid *) g_envhp ,
(dvoid **) &m_stmthp ,
OCI_HTYPE_STMT,
(size_t) 0,
(dvoid **) 0)
) ;
checkerr( m_dbp->m_errhp , OCIStmtPrepare( m_stmthp , m_dbp->m_errhp, sql ,
(ub4)strlen( (char *)sql ), (ub4)OCI_NTV_SYNTAX,
(ub4)OCI_DEFAULT)
) ;
checkerr( m_dbp->m_errhp , OCIBindByName( m_stmthp , &bndhp[0], m_dbp->m_errhp,
(text *) ":empno", -1, (dvoid *) &empno, sizeof(empno),
SQLT_INT, (dvoid *)0, (ub2 *)0, (ub2 *)0,
(ub4) 0, (ub4 *)0,OCI_DEFAULT)
) ;
checkerr( m_dbp->m_errhp , OCIBindByName( m_stmthp , &bndhp[1], m_dbp->m_errhp ,
(text *) ":ename", -1, (dvoid *)ename, strlen(ename) + 1 ,
SQLT_STR , (dvoid *)0, (ub2 *)0, (ub2 *) 0,
(ub4) 0, (ub4 *)0,OCI_DEFAULT)
) ;
checkerr( m_dbp->m_errhp , OCIBindByName( m_stmthp , &bndhp[2], m_dbp->m_errhp,
(text *) ":sal", -1, (dvoid *) &sal, sizeof(sal),
SQLT_FLT ,(dvoid *)0, (ub2 *)0, (ub2 *)0, (ub4)0,
(ub4 *)0 ,OCI_DEFAULT)
) ;
checkerr( m_dbp->m_errhp , OCIBindByName( m_stmthp , &bndhp[3], m_dbp->m_errhp,
(text *) ":job", -1, (dvoid *) job, sizeof(job),
SQLT_STR, (dvoid *)0, (ub2 *)0, (ub2 *)0, (ub4)0, (ub4 *)0,
OCI_DEFAULT)
) ;
checkerr( m_dbp->m_errhp , OCIStmtExecute( m_dbp->m_svchp ,m_stmthp , m_dbp->m_errhp ,
(ub4)1, (ub4) 0,(CONST OCISnapshot *) 0 ,
(OCISnapshot *) 0 , OCI_DEFAULT )
) ;
checkerr( m_dbp->m_errhp , OCITransCommit( m_dbp->m_svchp ,m_dbp->m_errhp , (ub4) 0 ) ) ;
|