Пример #1
0
OCI_Error * OCI_ErrorGet
(
    boolean check
)
{
    OCI_Error *err = NULL;

    if (OCILib.loaded && OCI_LIB_THREADED)
    {
        if (OCI_ThreadKeyGet(OCILib.key_errs, (void **)(dvoid *)&err))
        {
            if (!err)
            {
                err = OCI_ErrorCreate();

                if (err)
                {
                    OCI_ThreadKeySet(OCILib.key_errs, err);
                }
            }
        }
    }
    else
    {
        err = &OCILib.lib_err;
    }

    if (check && err && err->active)
    {
        err = NULL;
    }

    return err;
}
Пример #2
0
OCI_Error * OCI_ErrorGet
(
    boolean check,
    boolean warning
)
{
    OCI_Error *err = NULL;

    if ((warning == TRUE) && (OCILib.warnings_on == FALSE))
    {
        return NULL;
    }

    if (OCILib.loaded == TRUE)
    {
        if (OCI_ThreadKeyGet(OCILib.key_errs, ( void **) (dvoid *) &err) == TRUE)
        {
            if (err == NULL)
            {
                err = OCI_ErrorCreate();

                if (err != NULL)
                {
                    OCI_ThreadKeySet(OCILib.key_errs, err);
                }
            }
            else if (check == TRUE)
            {
                if ((err->active == TRUE) || (err->warning != warning))
                {
                    err = NULL;
                }
            }
        }
    }
    else
    {
        err = &OCILib.lib_err;

        if (err != NULL)
        {
            if ((err->active == TRUE) || (err->warning != warning))
            {
                err = NULL;
            }
        }
    }

    return err;
}