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

📄 interval.c

📁 oci的源码,可以在任何平台上编译,相当方便实用
💻 C
📖 第 1 页 / 共 2 页
字号:
   OCI_RESULT(res);

   
   return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_IntervalToText
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_IntervalToText(OCI_Interval *itv, int leading_prec,
                                    int fraction_prec, int size, mtext *str)
{
    boolean res = TRUE;
    void *ostr  = NULL;
    int osize   = size * sizeof(mtext);

    OCI_CHECK_PTR(OCI_IPC_INTERVAL, itv, FALSE);
    OCI_CHECK_PTR(OCI_IPC_STRING, str, FALSE);
 
    OCI_CHECK_INTERVAL_ENABLED(itv->con, FALSE);
 
    /* init output buffer in case of OCI failure */
    
    str[0] = 0;

#if OCI_VERSION_COMPILE >= OCI_9

    ostr = OCI_GetInputMetaString(str, &osize);
 
    OCI_CALL4
    (
        res, itv->err, itv->con,
        
        OCIIntervalToText((dvoid *) OCILib.env, itv->err,
                          (OCIInterval *) itv->handle,
                          (ub1) leading_prec, (ub1) fraction_prec,
                          (OraText *) ostr, (size_t) osize, 
                          (size_t *) &osize)
    )
 
    OCI_GetOutputMetaString(ostr, str, &osize);
    OCI_ReleaseMetaString(ostr);

    /* set null string terminator */

    str[osize/sizeof(mtext)] = 0;

#else

    OCI_NOT_USED(str);
    OCI_NOT_USED(ostr);
    OCI_NOT_USED(size);    
    OCI_NOT_USED(osize);    
    OCI_NOT_USED(leading_prec);    
    OCI_NOT_USED(fraction_prec);    

#endif

    OCI_RESULT(res);
   
    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_IntervalFromTimeZone
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_IntervalFromTimeZone(OCI_Interval *itv, const mtext * str)
{
    boolean res = TRUE;
    void *ostr  = NULL;
    int osize   = -1;

    OCI_CHECK_PTR(OCI_IPC_INTERVAL, itv, FALSE);
    OCI_CHECK_PTR(OCI_IPC_STRING, str, FALSE);
    
    OCI_CHECK_INTERVAL_ENABLED(itv->con, FALSE);

#if OCI_VERSION_COMPILE >= OCI_9

    ostr = OCI_GetInputMetaString(str, &osize);
  
    OCI_CALL4
    (
        res, itv->err, itv->con,
        
        OCIIntervalFromTZ((dvoid *) OCILib.env, itv->err,  (OraText *) ostr,
                          (size_t) osize, itv->handle)
    )

    OCI_ReleaseMetaString(ostr);

#else

    OCI_NOT_USED(str);
    OCI_NOT_USED(ostr);
    OCI_NOT_USED(osize);    

#endif

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_IntervalGetDaySecond
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_IntervalGetDaySecond(OCI_Interval *itv, int *day, int *hour,
                                         int *min, int *sec, int *fsec)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_INTERVAL, itv, FALSE);
    OCI_CHECK_PTR(OCI_IPC_INT, hour, FALSE);
    OCI_CHECK_PTR(OCI_IPC_INT, min , FALSE);
    OCI_CHECK_PTR(OCI_IPC_INT, sec,  FALSE);
    OCI_CHECK_PTR(OCI_IPC_INT, fsec, FALSE);

    OCI_CHECK_INTERVAL_ENABLED(itv->con, FALSE);

    *day  = 0;
    *hour = 0;
    *min  = 0;
    *sec  = 0;
    *fsec = 0;

#if OCI_VERSION_COMPILE >= OCI_9

    OCI_CALL4
    (
        res, itv->err, itv->con,
        
        OCIIntervalGetDaySecond((dvoid *) OCILib.env, itv->err,
                                (sb4 *) day, (sb4 *) hour, (sb4 *) min,
                                (sb4 *) sec, (sb4 *) fsec, itv->handle)
    )
    
#else

    OCI_NOT_USED(day);
    OCI_NOT_USED(hour);
    OCI_NOT_USED(min);    
    OCI_NOT_USED(sec);    
    OCI_NOT_USED(fsec);    

#endif

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_IntervalGetYearMonth
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_IntervalGetYearMonth(OCI_Interval *itv, int *year, int *month)
{
    boolean res = FALSE;

    OCI_CHECK_PTR(OCI_IPC_INTERVAL, itv, FALSE);
    OCI_CHECK_PTR(OCI_IPC_INT, year,  FALSE);
    OCI_CHECK_PTR(OCI_IPC_INT, month, FALSE);
 
    OCI_CHECK_INTERVAL_ENABLED(itv->con, FALSE);

    *year  = 0;
    *month = 0;

#if OCI_VERSION_COMPILE >= OCI_9

    OCI_CALL4
    (
        res, itv->err, itv->con,
        
        OCIIntervalGetYearMonth((dvoid *) OCILib.env, itv->err,
                                (sb4 *) year, (sb4 *) month, itv->handle)
    )
    
#else

    OCI_NOT_USED(year);
    OCI_NOT_USED(month);

#endif

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_IntervalSetDaySecond
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_IntervalSetDaySecond(OCI_Interval *itv, int day,int hour,
                                         int min, int sec, int fsec)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_INTERVAL, itv, FALSE);
    
    OCI_CHECK_INTERVAL_ENABLED(itv->con, FALSE);

#if OCI_VERSION_COMPILE >= OCI_9

    OCI_CALL4
    (
        res, itv->err, itv->con,
        
        OCIIntervalSetDaySecond((dvoid *) OCILib.env, itv->err,
                                (sb4) day, (sb4) hour, (sb4) min,
                                (sb4) sec, (sb4) fsec, itv->handle)
    )
    
#else

    OCI_NOT_USED(day);
    OCI_NOT_USED(hour);
    OCI_NOT_USED(min);    
    OCI_NOT_USED(sec);    
    OCI_NOT_USED(fsec);    

#endif

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_IntervalSetYearMonth
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_IntervalSetYearMonth(OCI_Interval *itv, int year, int month)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_INTERVAL, itv, FALSE);
    
    OCI_CHECK_INTERVAL_ENABLED(itv->con, FALSE);

#if OCI_VERSION_COMPILE >= OCI_9

    OCI_CALL4
    (
        res, itv->err, itv->con,
        
        OCIIntervalSetYearMonth((dvoid *) OCILib.env, itv->err,
                                (sb4) year, (sb4) month, itv->handle)
    )
    
#else

    OCI_NOT_USED(year);
    OCI_NOT_USED(month);

#endif

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_IntervalAdd
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_IntervalAdd(OCI_Interval *itv, OCI_Interval *itv2)
{
    boolean res = FALSE;

    OCI_CHECK_PTR(OCI_IPC_INTERVAL, itv,  FALSE);
    OCI_CHECK_PTR(OCI_IPC_INTERVAL, itv2, FALSE);

    OCI_CHECK_INTERVAL_ENABLED(itv->con, FALSE);

#if OCI_VERSION_COMPILE >= OCI_9

    OCI_CALL4
    (
        res, itv->err, itv->con,
        
        OCIIntervalAdd((dvoid *) OCILib.env, itv->err,
                                  itv->handle, itv2->handle, itv->handle)
    )

#endif

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_IntervalSubtract
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_IntervalSubtract(OCI_Interval *itv, OCI_Interval *itv2)
{
    boolean res = FALSE;

    OCI_CHECK_PTR(OCI_IPC_INTERVAL, itv,  FALSE);
    OCI_CHECK_PTR(OCI_IPC_INTERVAL, itv2, FALSE);
    
    OCI_CHECK_INTERVAL_ENABLED(itv->con, FALSE);

#if OCI_VERSION_COMPILE >= OCI_9

    OCI_CALL4
    (
        res, itv->err, itv->con,
        
        OCIIntervalSubtract((dvoid *) OCILib.env, itv->err,
                                      itv->handle, itv2->handle, itv->handle)
    )

#endif

    OCI_RESULT(res);

    return res;
}

⌨️ 快捷键说明

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