Ejemplo n.º 1
0
boolean OCI_API OCI_IntervalFree2(OCI_Library *pOCILib, OCI_Interval *itv)
{
    OCI_CHECK_PTR(pOCILib, OCI_IPC_INTERVAL, itv, FALSE);

    //OCI_CHECK_INTERVAL_ENABLED(pOCILib, itv->con, FALSE);

#if OCI_VERSION_COMPILE >= OCI_9_0

    OCI_CHECK_OBJECT_FETCHED(itv, FALSE);

    if (itv->hstate == OCI_OBJECT_ALLOCATED)
    {
        ub4 htype = 0;

        if (itv->type == OCI_INTERVAL_YM)
            htype = OCI_DTYPE_INTERVAL_YM;
        else if (itv->type == OCI_INTERVAL_DS)
            htype = OCI_DTYPE_INTERVAL_DS;

        OCI_DescriptorFree2(pOCILib, (dvoid *) itv->handle, htype);
    }

    if (itv->hstate != OCI_OBJECT_ALLOCATED_ARRAY)
    {
        OCI_FREE(itv);
    }

#endif

   OCI_RESULT(pOCILib, TRUE);

   return TRUE;
}
Ejemplo n.º 2
0
boolean OCI_API OCI_FileFree
(
    OCI_File *file
)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file, FALSE);
    OCI_CHECK_OBJECT_FETCHED(file, FALSE);

    OCI_FREE(file->dir);
    OCI_FREE(file->name);

    if (file->hstate == OCI_OBJECT_ALLOCATED)
    {
        OCI_DescriptorFree((dvoid *) file->handle, (ub4) OCI_DTYPE_LOB);
    }

    if (file->hstate != OCI_OBJECT_ALLOCATED_ARRAY)
    {
        OCI_FREE(file);
    }

    OCI_RESULT(res);

    return res;
}
Ejemplo n.º 3
0
boolean OCI_API OCI_DateFree(OCI_Library *pOCILib, OCI_Date *date)
{
    OCI_CHECK_PTR(pOCILib, OCI_IPC_DATE, date, FALSE);

    OCI_CHECK_OBJECT_FETCHED(date, FALSE);

    if (date->allocated == TRUE)
    {
        OCI_FREE(date->handle);
    }

    if (date->hstate != OCI_OBJECT_ALLOCATED_ARRAY)
    {
        OCI_FREE(date);
    }

    OCI_RESULT(pOCILib, TRUE);

    return TRUE;
}
Ejemplo n.º 4
0
boolean OCI_API OCI_ElemFree2(OCI_Library *pOCILib, OCI_Elem *elem, ExceptionSink* xsink)
{
   assert(elem);
   //OCI_CHECK_PTRQ(pOCILib, OCI_IPC_ELEMENT, elem, FALSE, xsink);

    OCI_CHECK_OBJECT_FETCHED(elem, FALSE);

    /* if the element has sub-objects that have been fetched, we need to free
       these objects */

    if (elem->obj != NULL)
    {
        OCI_Datatype * data = (OCI_Datatype *) elem->obj;

        if (data->hstate == OCI_OBJECT_FETCHED_CLEAN)
            data->hstate = OCI_OBJECT_FETCHED_DIRTY;

        switch (elem->typinf->cols[0].type)
        {
            case OCI_CDT_DATETIME:

                OCI_DateFree(pOCILib, (OCI_Date *) elem->obj);
                break;

            case OCI_CDT_LOB:

	       OCI_LobFree(pOCILib, (OCI_Lob *) elem->obj, xsink);
                break;

            case OCI_CDT_FILE:
	       assert(false);
	       //OCI_FileFree(pOCILib, (OCI_File *) elem->obj);
                break;

            case OCI_CDT_OBJECT:

	       OCI_ObjectFree2(pOCILib, (OCI_Object *) elem->obj, xsink);
                break;

            case OCI_CDT_COLLECTION:

	       OCI_CollFree2(pOCILib, (OCI_Coll *) elem->obj, xsink);
	       break;

            case OCI_CDT_TIMESTAMP:

	       OCI_TimestampFree2(pOCILib, (OCI_Timestamp *) elem->obj);
                break;

            case OCI_CDT_INTERVAL:

                OCI_IntervalFree2(pOCILib, (OCI_Interval *) elem->obj);
                break;
            
            case OCI_CDT_REF:
	       assert(false);
	       //OCI_RefFree(pOCILib, (OCI_Ref *) elem->obj);
                break;       
        }
    }
    
    if ((elem->hstate == OCI_OBJECT_ALLOCATED) && 
        (elem->typinf->cols[0].type == OCI_CDT_NUMERIC))
    {
        OCI_FREE(elem->handle);
    }

    OCI_FREE(elem->buf);
    OCI_FREE(elem);

    OCI_RESULT(pOCILib, TRUE);

    return TRUE;
}