很多georaster的函数操作都是用PL/SQL语句,先要DECLARE,在BEGIN  END执行。普通的sql语句我会用OCI来绑定,然后执行获取,但是在PL/SQL中的语句该怎么用OCI绑定获取呢?急死我了,谁有示范的例子

解决方案 »

  1.   

    一样的调用啊:
    OraText *sqlstmt = (OraText *)"BEGIN CDEMODT_INS_SEL(:1, :2, :3, :4, :5, :6); END; ";然后prepare, binding, ,,,,
    就像:  /* Converts the text strings to the datetime types in the table */
     for (i=0; i<3; i++) {
       if (ret = OCIDateTimeFromText(authp,errhp,(CONST OraText *)strdate[i],
               (ub4) strlen((char *)strdate[i]),(CONST OraText *) fmtdate[i],
               (ub1) strlen((char *)fmtdate[i]),(OraText *) NULL,(ub4) 0,dvar[i])) {
         chk_err(errhp,ret,__LINE__,(OraText *)"OCIDateFromText");
         return OCI_ERROR;
       }
     }   /* Converts the text strings to the interval types in the table */
     for (i=0; i<2; i++) {
       if ((ret = OCIIntervalFromText((dvoid *)authp, errhp,(CONST OraText *)
                    strdate[i+3], (ub4) strlen((char *)strdate[i+3]),
                    (OCIInterval *)ivar[i])) != OCI_SUCCESS) {
         chk_err(errhp, ret, __LINE__,(OraText *)"OCIIntervalFromText");
         return OCI_ERROR;
       }
     }   /* Preparation of statment handle for the SQL statement */
     if ((ret = OCIStmtPrepare(stmthp, errhp, insstmt, (ub4)strlen((char *)insstmt), OCI_NTV_SYNTAX,
                          OCI_DEFAULT)) != OCI_SUCCESS) {
        chk_err(errhp,ret,__LINE__,(OraText *)"OCIStmtPrepare");
        return OCI_ERROR;
     }
     ..........
      

  2.   

    请问楼上大侠,OraText *sqlstmt = (OraText *)"BEGIN CDEMODT_INS_SEL(:1, :2, :3, :4, :5, :6); END; ";这句话中BEGIN ....END中间的是什么,怎么得来的
      

  3.   


    就是说我把语句 做成存储过程,然后在BEGIN   END中调用。是吧
      

  4.   

    存储过程是你在外边创建的,在程序里头也可以。
    调用方式就像上边那样。
    你上rdbms\demo目录下边搜搜,有相关的例子。