⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dirpath.c

📁 oci的源码,可以在任何平台上编译,相当方便实用
💻 C
📖 第 1 页 / 共 3 页
字号:
                       &size, OCI_ATTR_COL_COUNT, dp->con->err);

            size = sizeof(dp->err_row);

            OCIAttrGet(dp->arr, OCI_HTYPE_DIRPATH_COLUMN_ARRAY, &dp->err_row,
                       &size, OCI_ATTR_ROW_COUNT, dp->con->err);

        }
    }
    else
    {
        ret = OCI_ERROR;
    }

    OCI_RESULT(ret == OCI_SUCCESS);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathLoad
 * ------------------------------------------------------------------------ */

unsigned int OCI_API OCI_DirPathLoad(OCI_DirPath *dp)
{
    unsigned int res = OCI_DPR_COMPLETE;
    sword ret = OCI_SUCCESS;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_CONVERTED, FALSE);

    dp->nb_prcsd =  0;
    dp->err_col  =  -1;

    ret = OCIDirPathLoadStream(dp->ctx, dp->strm, dp->con->err);

    switch (ret)
    {
        case OCI_SUCCESS:
        {
            dp->status     = OCI_DPS_PREPARED;
            dp->nb_prcsd   = dp->nb_cur;
            dp->nb_loaded += dp->nb_cur;
            res            = OCI_DPR_COMPLETE;

            break;
        }
        case OCI_ERROR:
        {
            res = OCI_DPR_ERROR;

            OCI_ExceptionOCI(dp->con->err, dp->con, NULL);

            break;
       }
       case OCI_NO_DATA:
        {
            res = OCI_DPR_EMPTY;

            break;
        }
       case OCI_NEED_DATA:
        {
            res = OCI_DPR_PARTIAL;

            break;
        }

    }

    if (ret != OCI_SUCCESS)
    {
        ub4 size = sizeof(dp->nb_prcsd);

         OCIAttrGet(dp->arr, OCI_HTYPE_DIRPATH_COLUMN_ARRAY, &dp->nb_prcsd,
                    &size, OCI_ATTR_NUM_ROWS, dp->con->err);
    }

    OCI_RESULT(ret == OCI_SUCCESS);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathFinish
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_DirPathFinish(OCI_DirPath *dp)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_PREPARED, FALSE);

    OCI_DirPathReset(dp);

	OCI_CALL2
    (
        res, dp->con,

        OCIDirPathFinish(dp->ctx, dp->con->err)
    )

    if (res == TRUE)
        dp->status = OCI_DPS_TERMINATED;

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathAbort
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_DirPathAbort(OCI_DirPath *dp)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_PREPARED, FALSE);

	OCI_CALL2
    (
        res, dp->con,

        OCIDirPathAbort(dp->ctx, dp->con->err)
    )

    if (res == TRUE)
        dp->status = OCI_DPS_TERMINATED;

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathSave
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_DirPathSave(OCI_DirPath *dp)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_PREPARED, FALSE);

    OCI_DirPathReset(dp);

	OCI_CALL2
    (
        res, dp->con,

        OCIDirPathDataSave(dp->ctx, dp->con->err, OCI_DIRPATH_DATASAVE_SAVEONLY)
    )

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathFlushRow
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_DirPathFlushRow(OCI_DirPath *dp)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_PREPARED, FALSE);

	OCI_CALL2
    (
        res, dp->con,

        OCIDirPathFlushRow(dp->ctx, dp->con->err)
    )

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathSetSize
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_DirPathSetCurrentRows(OCI_DirPath *dp, unsigned int nb_rows)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_PREPARED, FALSE);

    OCI_CHECK_BOUND(dp->con, nb_rows, 1, dp->nb_rows, FALSE);

    dp->nb_cur = nb_rows;

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathGetCurrentSize
 * ------------------------------------------------------------------------ */

unsigned int OCI_API OCI_DirPathGetCurrentRows(OCI_DirPath *dp)
{
    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_RESULT(TRUE);

    return dp->nb_cur;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathGetMaxSize
 * ------------------------------------------------------------------------ */

unsigned int OCI_API OCI_DirPathGetMaxRows(OCI_DirPath *dp)
{
    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_RESULT(TRUE);

    return dp->nb_rows;
}
/* ------------------------------------------------------------------------ *
 * OCI_DirPathSetDateFormat
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_DirPathSetDateFormat(OCI_DirPath *dp, mtext *format)
{
    boolean res = TRUE;
    void *ostr  = NULL;
    int osize   = -1;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_NOT_PREPARED, FALSE);

    osize = -1;
    ostr  = OCI_GetInputMetaString(format, &osize);

    OCI_CALL2
    (
        res, dp->con,

        OCIAttrSet((dvoid *) dp->ctx, (ub4) OCI_HTYPE_DIRPATH_CTX,
                   (dvoid *) ostr, (ub4) osize,
                   (ub4) OCI_ATTR_DATEFORMAT, dp->con->err)
    )

    OCI_ReleaseMetaString(ostr);

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathSetParallel
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_DirPathSetParallel(OCI_DirPath *dp, boolean value)
{
    boolean res = TRUE;
    ub1 enabled = (ub1) value;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_NOT_PREPARED, FALSE);

    OCI_CALL2
    (
        res, dp->con,

        OCIAttrSet((dvoid *) dp->ctx, (ub4) OCI_HTYPE_DIRPATH_CTX,
                   (dvoid *) &enabled, (ub4) sizeof(enabled),
                   (ub4) OCI_ATTR_DIRPATH_PARALLEL, dp->con->err)
    )

    OCI_RESULT(res);

    return res;}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathSetNoLog
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_DirPathSetNoLog(OCI_DirPath *dp, boolean value)
{
    boolean res = TRUE;
    ub1 nolog   = (ub1) value;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_NOT_PREPARED, FALSE);

    OCI_CALL2
    (
        res, dp->con,

        OCIAttrSet((dvoid *) dp->ctx, (ub4) OCI_HTYPE_DIRPATH_CTX,
                   (dvoid *) &nolog, (ub4) sizeof(nolog),
                   (ub4) OCI_ATTR_DIRPATH_NOLOG, dp->con->err)
    )

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathSetCacheSize
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_DirPathSetCacheSize(OCI_DirPath *dp, unsigned int size)
{
    boolean res     = TRUE;
    ub4 cache_size  = size;
    boolean enabled = FALSE;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_DATE_CACHE_ENABLED(dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_NOT_PREPARED, FALSE);

    OCI_CALL2
    (
        res, dp->con,

        OCIAttrSet((dvoid *) dp->ctx, (ub4) OCI_HTYPE_DIRPATH_CTX,
                   (dvoid *) &cache_size, (ub4) sizeof(cache_size),
                   (ub4) OCI_ATTR_DIRPATH_DCACHE_SIZE, dp->con->err)
    )

    OCI_CALL2
    (
        res, dp->con,

        OCIAttrSet((dvoid *) dp->ctx, (ub4) OCI_HTYPE_DIRPATH_CTX,
                   (dvoid *) &enabled, (ub4) sizeof(enabled),
                   (ub4) OCI_ATTR_DIRPATH_DCACHE_DISABLE, dp->con->err)
    )

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathSetBufferSize
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_DirPathSetBufferSize(OCI_DirPath *dp, unsigned int size)
{
    boolean res  = TRUE;
    ub4 bufsize  = (ub4) size;

    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_CHECK_DIRPATH_STATUS(dp, OCI_DPS_NOT_PREPARED, FALSE);

    OCI_CALL2
    (
        res, dp->con,

        OCIAttrSet((dvoid *) dp->ctx, (ub4) OCI_HTYPE_DIRPATH_CTX,
                   (dvoid *) &bufsize, (ub4) sizeof(bufsize),
                   (ub4) OCI_ATTR_BUF_SIZE, dp->con->err)
    )

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathGetRowCount
 * ------------------------------------------------------------------------ */

unsigned int OCI_API OCI_DirPathGetRowCount(OCI_DirPath *dp)
{
    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_RESULT(TRUE);

    return dp->nb_loaded;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathGetAffectedRows
 * ------------------------------------------------------------------------ */

unsigned int OCI_API OCI_DirPathGetAffectedRows(OCI_DirPath *dp)
{
    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_RESULT(TRUE);

    return dp->nb_prcsd;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathGetErrorColumn
 * ------------------------------------------------------------------------ */

unsigned int OCI_API OCI_DirPathGetErrorColumn(OCI_DirPath *dp)
{
    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_RESULT(TRUE);

    return dp->err_col + 1;
}

/* ------------------------------------------------------------------------ *
 * OCI_DirPathGetErrorRow
 * ------------------------------------------------------------------------ */

unsigned int OCI_API OCI_DirPathGetErrorRow(OCI_DirPath *dp)
{
    OCI_CHECK_PTR(OCI_IPC_DIRPATH, dp, FALSE);

    OCI_RESULT(TRUE);

    return dp->err_row + 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -