亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cdemodp.c

?? 調用OCI的C++類
?? C
?? 第 1 頁 / 共 5 頁
字號:
      state = GET_RECORD;                     /* get some more input records*/      /* FALLTHROUGH */    }    case GET_RECORD:    {      assert(lastoff < ctlp->nrow_ctl);                /* array bounds check*/      recp = (text *)(ctlp->inbuf_ctl + (lastoff * sessp->maxreclen_sess));      if (fgets((char *)recp, (int)sessp->maxreclen_sess, inputfp)                != (char *)NULL)      {        /* set column array offset to input record number map */        ctlp->otor_ctl[lastoff] = ++input_recnum;        /* if ((input_recnum % 10000) == 0)          fprintf(output_fp, "record number: %d\n", (int)input_recnum); */        state = FIELD_SET;        /* FALLTHROUGH */      }      else      {        if (lastoff)          lastoff--;        state = END_OF_INPUT;        break;      }    }    case FIELD_SET:    {      /* map input data fields to DB columns, set column array entries */      fsetrv = field_set(ctlp, tblp, (struct obj *) 0, recp, lastoff, 0);      rowCnt = lastoff + 1;      if (rowCnt == ctlp->nrow_ctl || fsetrv != FIELD_SET_COMPLETE)      {        /* array is full, or have a large partial column, or the         * secondary buffer is in use by an OUTOFLINE field.         */        state = DO_CONVERT;        /* FALLTHROUGH */      }      else      {        lastoff++;                             /* use next column array slot*/        state = GET_RECORD;                               /* get next record*/        break;      }    }    case DO_CONVERT:    {      /* Either one of the following is true:       * - the column array is full       * - there is a large partial column       * - the secondary buffer used by field_set() is in use       * - previous conversion returned CONVERT_CONTINUE and       *   now the conversion is being resumed.       *       * In any case, convert and load the data.       */      ub4    cvtBadRoff;                   /* bad row offset from conversion*/      ub2    cvtBadCoff;                /* bad column offset from conversion*/      while (startoff <= lastoff)      {        ub4 cvtCntPerCall = 0;   /* rows converted in one call to do_convert*/        /* note that each call to do_convert() will convert all contiguousrows         * in the colarray until it hit a row in error while converting.         */        cvtrv = do_convert(ctlp, startoff, rowCnt, &cvtCntPerCall,                           &cvtBadCoff);        cvtCnt += cvtCntPerCall; /* sum of rows converted so far in colarray*/        if (cvtrv == CONVERT_SUCCESS)        {          /* One or more rows converted successfully, break           * out of the conversion loop and load the rows.           */          assert(cvtCntPerCall > 0);          state = DO_LOAD;          break;        }        else if (cvtrv == CONVERT_ERROR)        {          /* Conversion error.  Reject the bad record and           * continue on with the next record (if any).           * cvtBadRoff is the 0-based index of the bad row in           * the column array.  cvtBadCoff is the 0-based index           * of the bad column (of the bad row) in the column           * array.           */          assert(cvtCntPerCall >= 0);          cvtBadRoff = startoff + cvtCntPerCall;          err_recnum = ctlp->otor_ctl[cvtBadRoff];    /* map to input_recnum*/          fprintf(output_fp, "Conversion Error on record %d, column %d\n",                           (int)err_recnum, (int)cvtBadCoff + 1);          /* print err msg txt */          errprint((dvoid *)(ctlp->errhp_ctl), OCI_HTYPE_ERROR,                   (sb4 *)0);         /* Check to see if the conversion error occurred on a          * continuation of a partially loaded row.          * If so, either (a) flush the partial row from the server, or          * (b) mark the column as being 0 length and complete.          * In the latter case (b), any data already loaded into the column          * from a previous LoadStream call remains, and we can continue          * field setting, conversion and loading with the next column.          * Here, we implement (a), and flush the row from the server.          */          if (err_recnum == load_recnum)          {            /* Conversion error occurred on record which has been             * partially loaded (by a previous stream).             * XXX May be better to have an attribute of the direct path             * XXX context which indicates that the last row loaded was             * XXX partial.             *             * Flush the output pipe.  Note that on conversion error,             * no part of the row data for the row in error makes it             * into the stream buffer.             * Here we flush the partial row from the server.  The             * stream state is reset if no rows are successfully             * converted.             */            /* flush partial row from server */            (void) OCIDirPathFlushRow(ctlp->dpctx_ctl, ctlp->errhp_ctl);          }          if (cvtBadRoff == lastoff)          {            /* Conversion error occurred on the last populated slot             * of the column array.             * Flush the input stream of any data for this row,             * and re-use this slot for another input record.             */            field_flush(ctlp, lastoff);            state    = GET_RECORD;            startoff = cvtBadRoff;              /* only convert the last row*/            rowCnt = 0;    /* already tried converting all rows in col array*/            assert(startoff <= lastoff);            break;          }          else          {            /* Skip over bad row and continue conversion with next row.             * We don't attempt to fill in this slot with another record.             */            startoff = cvtBadRoff + 1;            assert(startoff <= lastoff);            continue;          }        }        else if (cvtrv == CONVERT_NEED_DATA)      /* partial col encountered*/        {          /* Partial (large) column encountered, load the piece           * and loop back up to field_set to get the rest of           * the partial column.           * startoff is set to the offset into the column array where           * we need to resume conversion from, which should be the           * last entry that we set (lastoff).           */          state    = DO_LOAD;          /* Set our row position in column array to resume           * conversion at when DO_LOAD transitions to DO_CONVERT.           */          assert(cvtCntPerCall >= 0);          startoff = startoff + cvtCntPerCall;/*           assert(startoff == lastoff); */          break;        }        else if (cvtrv == CONVERT_CONTINUE)        {          /* The stream buffer is full and there is more data in           * the column array which needs to be converted.           * Load the stream (DO_LOAD) and transition back to           * DO_CONVERT to convert the remainder of the column array,           * without calling the field setting function in between.           * The sequence {DO_CONVERT, DO_LOAD} may occur many times           * for a long row or column.           * Note that startoff becomes the offset into the column array           * where we need to resume conversion from.           */          cvtcontcnt++;          state    = DO_LOAD;          /* Set our row position in column array (startoff) to           * resume conversion at when we transition from the           * DO_LOAD state back to DO_CONVERT.           */          assert(cvtCntPerCall >= 0);          startoff = startoff + cvtCntPerCall;          assert(startoff <= lastoff);          break;        }      }                                                         /* end while*/      break;    }    case DO_LOAD:    {      ub4    loadCnt;                     /* count of rows loaded by do_load*/      ldrv       = do_load(ctlp, &loadCnt);      nxtLoadOff = nxtLoadOff + loadCnt;      switch (ldrv)      {      case LOAD_SUCCESS:      {        /* The stream has been loaded successfully.  What we do next         * depends on the result of the previous conversion step.         */        load_recnum = ctlp->otor_ctl[nxtLoadOff - 1];        if (cvtrv == CONVERT_SUCCESS || cvtrv == CONVERT_ERROR)        {          /* The column array was successfully converted (or the           * last row was in error).           * Fill up another array with more input records.           */          state = RESET;        }        else if (cvtrv == CONVERT_CONTINUE)        {          /* There is more data in column array to convert and load. */          state    = DO_CONVERT;          /* Note that when do_convert returns CONVERT_CONTINUE that           * startoff was set to the row offset into the column array           * of where to resume conversion.  The loadCnt returned by           * OCIDirPathLoadStream is the number of rows successfully           * loaded.           * Do a sanity check on the attributes here.           */          if (startoff != nxtLoadOff)                              /* sanity*/            fprintf(output_fp, "LOAD_SUCCESS/CONVERT_CONTINUE: %ld:%ld\n",                    (long)nxtLoadOff, startoff);          /* Reset the direct stream state so conversion starts at           * the beginning of the stream.           */          (void) OCIDirPathStreamReset(ctlp->dpstr_ctl, ctlp->errhp_ctl);        }        else        {          /* Note that if the previous conversion step returned           * CONVERT_NEED_DATA then the load step would have returned           * LOAD_NEED_DATA too (not LOAD_SUCCESS).           */          FATAL("DO_LOAD:LOAD_SUCCESS: unexpected cvtrv", cvtrv);        }        break;      }      case LOAD_ERROR:      {        sb4  oraerr;        ub4  badRowOff;        badRowOff   = nxtLoadOff;        nxtLoadOff += 1;                              /* account for bad row*/        err_recnum      = ctlp->otor_ctl[badRowOff];  /* map to input_recnum*/        fprintf(output_fp, "Error on record %ld\n", (long)err_recnum);        /* print err msg txt */        errprint((dvoid *)(ctlp->errhp_ctl), OCI_HTYPE_ERROR, &oraerr);        /* On a load error, all rows up to the row in error are loaded.         * account for that here by setting load_recnum only when some         * rows have been loaded.         */        if (loadCnt != 0)          load_recnum = err_recnum - 1;        if (oraerr == OER(600))          FATAL("DO_LOAD:LOAD_ERROR: server internal error", oraerr);        if (err_recnum == input_recnum)        {          /* Error occurred on last input row, which may or may not           * be in a partial state. Flush any remaining input for           * the bad row.           */          field_flush(ctlp, badRowOff);        }        if (err_recnum == load_recnum)        {          /* Server has part of this row already, flush it */          (void) OCIDirPathFlushRow(ctlp->dpctx_ctl, ctlp->errhp_ctl);        }        if (badRowOff == lastoff)        {          /* Error occurred on the last entry in the column array,           * go process more input records and set up another array.           */          state = RESET;        }        else        {          /* Otherwise, continue loading this stream.  Note that the           * stream positions itself to the next row on error.           */          state    = DO_LOAD;        }        break;      }      case LOAD_NEED_DATA:      {        load_recnum = ctlp->otor_ctl[nxtLoadOff];        if (cvtrv == CONVERT_NEED_DATA)          state = FIELD_SET;                         /* need more input data*/        else if (cvtrv == CONVERT_CONTINUE)          state = DO_CONVERT;   /* have input data, continue with conversion*/        else          FATAL("DO_LOAD:LOAD_NEED_DATA: unexpected cvtrv", cvtrv);        /* Reset the direct stream state so conversion starts at         * the beginning of the stream.         */        (void) OCIDirPathStreamReset(ctlp->dpstr_ctl, ctlp->errhp_ctl);        break;      }      case LOAD_NO_DATA:      {        /* Attempt to either load an empty stream, or a stream         * which has been completely processed.         */        if (cvtrv == CONVERT_CONTINUE)        {          /* Reset stream state so we convert into an empty stream buffer.*/          (void) OCIDirPathStreamReset(ctlp->dpstr_ctl,  ctlp->errhp_ctl);          state = DO_CONVERT;           /* convert remainder of column array*/        }        else          state = RESET;                      /* get some more input records*/        break;      }      default:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97精品超碰一区二区三区| 免费高清不卡av| 日韩精品一级二级| 国产精品77777竹菊影视小说| av在线不卡电影| 欧美美女视频在线观看| 久久久亚洲国产美女国产盗摄 | 欧美精品日韩精品| 欧美大白屁股肥臀xxxxxx| 国产精品美女久久久久aⅴ | 国产嫩草影院久久久久| 亚洲国产综合视频在线观看| 精品系列免费在线观看| 在线免费观看不卡av| 精品少妇一区二区| 午夜视频一区在线观看| 成人av第一页| 精品美女一区二区| 成人欧美一区二区三区视频网页| 亚洲h精品动漫在线观看| 成人动漫精品一区二区| 日韩一级视频免费观看在线| 国产精品久久久99| 日韩av高清在线观看| 色偷偷一区二区三区| 中文字幕 久热精品 视频在线| 亚洲国产精品一区二区www| 国产99久久久国产精品潘金| 日韩欧美一区在线观看| 亚洲一二三四在线观看| 成人av在线网站| 久久久久久久久伊人| 日韩av一区二区三区四区| 99精品久久久久久| 欧美电视剧在线看免费| 日韩国产欧美在线观看| 欧美专区日韩专区| 亚洲老妇xxxxxx| 99国产麻豆精品| 国产精品美日韩| 国产成人亚洲精品狼色在线| 日韩精品在线网站| 日韩电影在线观看电影| 欧美日韩亚州综合| 亚洲一区在线视频观看| 色88888久久久久久影院按摩| 精品一区二区三区欧美| 精品国产乱码久久久久久1区2区| 亚洲成人av电影| 色吧成人激情小说| 亚洲精选一二三| 91黄色免费观看| 亚洲va天堂va国产va久| 3751色影院一区二区三区| 亚洲午夜免费视频| 91精品国产综合久久久久久久久久| 亚洲aⅴ怡春院| 91麻豆精品国产无毒不卡在线观看 | 欧美日韩一级视频| 亚洲国产成人porn| 欧美精品 国产精品| 亚洲美女视频在线观看| 欧美三日本三级三级在线播放| 亚洲网友自拍偷拍| 欧美精品一区二区在线观看| 国产精品久久久久aaaa樱花| 成人av电影在线播放| 国产视频一区在线观看| 成人av电影在线| 亚洲伊人色欲综合网| 欧美日韩精品一区二区| 精品一二三四区| 国产精品日产欧美久久久久| 99riav久久精品riav| 亚洲高清一区二区三区| 精品国精品国产| 激情五月婷婷综合网| 久久人人97超碰com| 国产成人综合自拍| 亚洲乱码中文字幕| 久久久精品天堂| 日韩av网站免费在线| 日韩视频在线你懂得| 成人深夜在线观看| 视频一区二区欧美| 欧美亚洲精品一区| 欧美探花视频资源| 久久精品国产色蜜蜜麻豆| 国产精品久久精品日日| 9i看片成人免费高清| 日本色综合中文字幕| 中文字幕中文字幕在线一区| 欧美一级理论片| 91免费看`日韩一区二区| 激情图片小说一区| 亚洲va欧美va国产va天堂影院| 精品国产1区2区3区| 91国产免费看| 成人美女视频在线看| 香蕉av福利精品导航| 国产欧美日产一区| 日韩欧美国产综合一区| 欧洲av在线精品| 成人中文字幕在线| 久久电影网站中文字幕| 亚洲一区二区三区四区在线免费观看| 91国偷自产一区二区开放时间| 国产在线观看免费一区| 亚洲成人777| 麻豆成人综合网| 欧美精品一区男女天堂| 欧美怡红院视频| 成人自拍视频在线| 国产一区二区三区四| 视频一区在线视频| 亚洲一区二区欧美激情| 中文字幕在线一区免费| 国产欧美一区二区精品性色 | 风间由美一区二区三区在线观看 | 欧美精彩视频一区二区三区| 欧洲另类一二三四区| 99re热这里只有精品视频| 韩国女主播一区| 色哟哟国产精品| 欧美激情一区二区三区| 亚洲精品一区二区精华| 精品福利二区三区| 久久久一区二区三区| 久久精品视频一区二区三区| 国产欧美视频一区二区三区| 国产日韩精品久久久| 国产精品久久久久久久久免费相片| 国产亚洲一区二区在线观看| 国产日韩三级在线| 亚洲欧美另类在线| 亚洲一二三区不卡| 免费不卡在线视频| 国产白丝网站精品污在线入口| 国产精品99久久不卡二区| av不卡在线播放| 在线中文字幕不卡| 欧美日本视频在线| 欧美精品一区二区三区四区| 一本到不卡精品视频在线观看| 亚洲欧美怡红院| 亚洲一区在线观看视频| 日本女优在线视频一区二区 | 色先锋久久av资源部| 欧美日韩精品一区二区三区| 久久综合99re88久久爱| 天天综合日日夜夜精品| 久久精品国产99国产| www.av亚洲| 日韩午夜激情视频| 亚洲欧美一区二区三区极速播放 | 免费看日韩a级影片| www.欧美日韩| 日韩欧美在线一区二区三区| 国产精品免费视频一区| 日韩极品在线观看| 成人成人成人在线视频| 日韩一区二区视频在线观看| 中文字幕一区二区三| 久草热8精品视频在线观看| 91视频你懂的| 日韩一本二本av| 久久一日本道色综合| 亚洲精品va在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 成人黄色在线网站| 9191久久久久久久久久久| 国产精品网友自拍| 久久国产乱子精品免费女| 欧美在线色视频| 中文字幕中文字幕一区| 国产在线播放一区三区四| 91 com成人网| 一区二区三区国产| 成人黄色综合网站| ww亚洲ww在线观看国产| 日本强好片久久久久久aaa| 在线影视一区二区三区| 日韩在线一二三区| 精品一区二区三区蜜桃| 色综合久久久久久久久| 久久噜噜亚洲综合| 精品在线观看视频| 欧美一区二区三区人| 五月天亚洲精品| 99综合电影在线视频| 日本一区二区电影| 国产福利不卡视频| 国产午夜精品美女毛片视频| 日产欧产美韩系列久久99| 欧美乱妇20p| 亚洲成人一区在线| 欧美精品第1页| 日本不卡视频一二三区| 日韩午夜在线观看视频| 免费不卡在线视频|