Classes | Typedefs | Enumerations | Functions | Variables

OCIPL Namespace Reference

Classes

struct  OciException
 OCI Error handling. More...
struct  OciHandleID
 mapping between OCI handle types and the corresponding type and attribute constants More...
struct  OciSimpleHandle
 "simple" OCI handles without OciEnv More...
struct  OciHandleWrapper
 wrapping of already existing OCI handles without freeing them in destructor More...
struct  OciEnv
 OCI environment handles. More...
struct  OciEnvAlloc
 wrapper for the OCIEnv handle More...
struct  OciHandle
 OCI handles. More...
struct  OciDescriptor
 OCI descriptor handles. More...
struct  OracleServer
 encapsulation of the OCIServer handle, used in OCIPL::OciLogin More...
struct  LoginPara
 database login parameter structure More...
struct  OciContext
struct  OciLogin
 simple OCI login to database More...
struct  OciConnection
 wrap OCIEnv and OCISvcCtx together More...
struct  ColumnTypeInfo
 column type information More...
struct  ColumnType
 column type description including name More...
struct  SqlInd
 Indicator variables are used to store information about the NULL-state of bind variables and result columns. More...
struct  SqlValue
 base class of bind variable structures containing the indicator variable More...
struct  SqlIndArray
 array of indicator variables More...
struct  SqlInt
 int wrapper with indicator variable More...
struct  SqlIntArray
 array of integer bind variable buffers More...
struct  SqlString
 string buffer bind variable structure More...
struct  SqlStringArray
 array of string bind variable buffers More...
struct  ocidatetime
 internal DATE representation More...
struct  OciDate
 wrapper for OCI DATE type More...
struct  OciDateArray
 OCI DATE type bind variable array. More...
struct  SqlDateTime
 wrapper for internal Oracle DATE type More...
struct  SqlDateTimeArray
 wrapper for internal Oracle DATE type More...
struct  oraclenumber
 internal NUMBER representation More...
struct  SqlNumber
 wrapper for internal Oracle NUMBER type More...
struct  SqlNumberArray
 array of NUMBER bind variable buffers More...
struct  OciLob
 base class for the BLOB/CLOB data holders OCIPL::OciLob and OCIPL::OciClob More...
struct  OciClob
 CLOB data holder structure. More...
struct  BindInput
 factory for call parameters of OCI bind functions More...
struct  BindOutput
 factory for call parameters of OCI bind functions More...
struct  TrimBindPar
 Binding of input strings with trimming to the specified maximum length. More...
struct  DefinePar
 factory for call parameters for OCI define functions More...
struct  LocalOciState
struct  SqlStatement
 an OCI SQL statement More...
struct  SqlVariantArray
 variant array to be used as bind variable buffer More...
struct  SqlRecord
 a record to hold return columns for a given statement More...
struct  SqlResult
 class to retrieve query result values More...
struct  ResultIterator
 iterator utilizing bulk mode fetching More...

Typedefs

typedef OciSimpleHandle< OCIError > OciError
 OCI Error Handles.
typedef OciSimpleHandle
< OCIDescribe > 
OciDescribe
 OCI Describe Handles.
typedef OciDescriptor< OCIParam > OciParam
typedef OciHandle< OCIBind > OciBindHandle
typedef OciHandle< OCIDefine > OciDefineHandle

Enumerations

enum  OCI_STATE {
  OS_NONE, OS_PREPARE, OS_RELEASE, OS_EXECUTE,
  OS_FETCH, OS_TRANSACTION
}
enum  { INT_NULL = -1 }

Functions

void throw_oci_exception (OCIError *errh, sword res)
void throw_oci_exception (OCIEnv *envh, sword res)
int number_to_int (const oraclenumber &val, OCIError *errh)
double number_to_double (const oraclenumber &val, OCIError *errh)
tstring number_to_str (const oraclenumber &val, OCIError *errh, const TCHAR *fmt, const TCHAR *nls_fmt)
tstring ocidate_to_string (const OCIDate &date)
tstring ocidate_to_short_string (const OCIDate &date)
struct tm * ocidate_to_gmt (const OCIDate &date)
struct tm * ocidate_to_lctime (const OCIDate &date)
time_t ocidate_to_time_t (const OCIDate &date)
tstring ocidatetime_to_string (const ocidatetime &date)
const TCHAR * get_oci_ptype_str (ub1 type)
static tstring tokenize (const TCHAR **ptr, const TCHAR *sep)
static tstring tokenize (const TCHAR **ptr, const TCHAR *sep, TCHAR key)
int istspace (TCHAR c)
void oci_check_error (OCIError *errh, sword res)
void oci_check_error (OCIEnv *envh, sword res)
void oci_check_error (OciEnv &env, sword res)
void throw_ocipl_exception (OciException e)
 This function is called to throw OCIPL Exceptions in response to Oracle Errors.

Variables

int g_OCIPL_BULK_ROWS = 100

Typedef Documentation

typedef OciHandle<OCIBind> OCIPL::OciBindHandle

Definition at line 1184 of file ocipl.h.

typedef OciHandle<OCIDefine> OCIPL::OciDefineHandle

Definition at line 1185 of file ocipl.h.

typedef OciSimpleHandle<OCIDescribe> OCIPL::OciDescribe

OCI Describe Handles.

Definition at line 511 of file ocipl.h.

typedef OciSimpleHandle<OCIError> OCIPL::OciError

OCI Error Handles.

Definition at line 507 of file ocipl.h.

typedef OciDescriptor<OCIParam> OCIPL::OciParam

Definition at line 720 of file ocipl.h.


Enumeration Type Documentation

anonymous enum
Enumerator:
INT_NULL 

Definition at line 1232 of file ocipl.h.

{INT_NULL = -1};
Enumerator:
OS_NONE 
OS_PREPARE 
OS_RELEASE 
OS_EXECUTE 
OS_FETCH 
OS_TRANSACTION 

Definition at line 336 of file ocipl.h.


Function Documentation

const TCHAR * OCIPL::get_oci_ptype_str ( ub1  type )

Definition at line 1978 of file ocipl.cpp.

References TEXT.

{
    switch(type) {
      case OCI_PTYPE_TABLE:         return TEXT("table");
      case OCI_PTYPE_VIEW:          return TEXT("view");
      case OCI_PTYPE_PROC:          return TEXT("procedure");
      case OCI_PTYPE_FUNC:          return TEXT("function");
      case OCI_PTYPE_PKG:           return TEXT("package");
      case OCI_PTYPE_TYPE:          return TEXT("user-defined type");
      case OCI_PTYPE_SYN:           return TEXT("synonym");
      case OCI_PTYPE_SEQ:           return TEXT("sequence");
      case OCI_PTYPE_COL:           return TEXT("column");
      case OCI_PTYPE_ARG:           return TEXT("argument");
      case OCI_PTYPE_LIST:          return TEXT("list");
      case OCI_PTYPE_TYPE_ATTR:     return TEXT("user-defined type's attribute");
      case OCI_PTYPE_TYPE_COLL:     return TEXT("collection type's element ");
      case OCI_PTYPE_TYPE_METHOD:   return TEXT("user-defined type's method");
      case OCI_PTYPE_TYPE_ARG:      return TEXT("user-defined type method's argument");
      case OCI_PTYPE_TYPE_RESULT:   return TEXT("user-defined type method's result");
#if ORACLE_VERSION>=81
      case OCI_PTYPE_SCHEMA:        return TEXT("schema");
      case OCI_PTYPE_DATABASE:      return TEXT("database");
#endif
    }

    return TEXT("unknown type");
}
int OCIPL::istspace ( TCHAR  c ) [inline]

Definition at line 290 of file ocipl.h.

Referenced by OCIPL::OciDate::OciDate(), OCIPL::LoginPara::parse(), and OCIPL::SqlNumber::SqlNumber().

{
#ifdef UNICODE
    return _istspace((unsigned short)c);
#else
    return isspace((unsigned char)c);
#endif
}

Here is the caller graph for this function:

double OCIPL::number_to_double ( const oraclenumber &  val,
OCIError *  errh 
)

Definition at line 467 of file ocipl.cpp.

References oci_check_error().

Referenced by OCIPL::SqlNumberArray::get_double(), OCIPL::SqlNumber::get_double(), and number_to_int().

{
    double x;

    sword res = OCINumberToReal(errh, (OCINumber*)&val, sizeof(x), &x);
    oci_check_error(errh, res);

    return x;
}

Here is the call graph for this function:

Here is the caller graph for this function:

int OCIPL::number_to_int ( const oraclenumber &  val,
OCIError *  errh 
)

Definition at line 423 of file ocipl.cpp.

References number_to_double(), and oci_check_error().

Referenced by OCIPL::SqlNumberArray::get_int(), and OCIPL::SqlNumber::get_int().

{
    int x;

#if ORACLE_VERSION>=81
     // Oracle Version >= 8.1.x
    boolean isInt;
    sword res = OCINumberIsInt(errh, (OCINumber*)&val, &isInt);

    if (res==OCI_SUCCESS && isInt)
    {
        res = OCINumberToInt(errh, (OCINumber*)&val, sizeof(x), OCI_NUMBER_SIGNED, &x);
        oci_check_error(errh, res);
    }
    else
#else
     // OCI.DLL of Oracle Version 8.0
    sword res = OCINumberToInt(errh, (OCINumber*)&val, sizeof(x), OCI_NUMBER_SIGNED, &x);

    if (res != OCI_SUCCESS)
#endif
    {
        double d = number_to_double(val, errh);

        x = int(d + .5);
    }

    //x = atoi(str(true).c_str());

    return x;
}

Here is the call graph for this function:

Here is the caller graph for this function:

tstring OCIPL::number_to_str ( const oraclenumber &  val,
OCIError *  errh,
const TCHAR *  fmt,
const TCHAR *  nls_fmt 
)

Definition at line 477 of file ocipl.cpp.

References _tcslen, oci_check_error(), and TCHAR.

Referenced by OCIPL::SqlNumberArray::str(), and OCIPL::SqlNumber::str().

{
    OraText buffer[128];
    ub4 l = sizeof(buffer);

    sword res = OCINumberToText(errh,
                        (OCINumber*)&val,
                        (const OraText*)fmt, (ub4)_tcslen(fmt)*sizeof(TOraText),
                        (const OraText*)nls_fmt, (ub4)_tcslen(nls_fmt)*sizeof(TOraText),
                        &l, buffer);

    oci_check_error(errh, res);

//  const TCHAR* p = (const TCHAR*)buffer;
//  while(istspace(*p))
//      ++p;

    return (const TCHAR*)buffer;//p
}

Here is the call graph for this function:

Here is the caller graph for this function:

void OCIPL::oci_check_error ( OCIError *  errh,
sword  res 
) [inline]

Definition at line 724 of file ocipl.h.

References throw_oci_exception().

Referenced by OCIPL::OciHandle< OCIServer >::alloc(), OCIPL::OciSimpleHandle< OCIError >::alloc(), OCIPL::OciLob::append(), OCIPL::OracleServer::attach(), OCIPL::SqlStatement::bind_input(), OCIPL::SqlStatement::bind_output(), OCIPL::SqlStatement::bind_result(), OCIPL::OciConnection::cancel(), OCIPL::OciLob::clear(), OCIPL::OciContext::commit(), OCIPL::OciLogin::connect(), OCIPL::OciLob::copy(), OCIPL::OciDescriptor< TYPE >::destroy(), OCIPL::OciHandle< OCIServer >::destroy(), OCIPL::OciSimpleHandle< OCIError >::destroy(), OCIPL::OracleServer::detach(), OCIPL::OciLob::disable_buffering(), OCIPL::OciLogin::disconnect(), OCIPL::OciLob::enable_buffering(), OCIPL::OciLob::erase(), OCIPL::SqlStatement::execute_internal(), OCIPL::SqlStatement::fetch(), OCIPL::OciLob::flush(), OCIPL::OciDescriptor< TYPE >::get_attribute(), OCIPL::OciHandle< OCIServer >::get_attribute(), OCIPL::OciSimpleHandle< OCIError >::get_attribute(), OCIPL::OciLob::get_chunk_size(), OCIPL::SqlStatement::get_column_count(), OCIPL::SqlStatement::get_column_type(), OCIPL::SqlStatement::get_stmt_type(), OCIPL::ColumnType::init(), number_to_double(), number_to_int(), number_to_str(), oci_check_error(), OCIPL::OciDate::OciDate(), OCIPL::OciLob::OciLob(), OCIPL::OciLob::operator==(), OCIPL::SqlStatement::prepare(), OCIPL::OciClob::read(), OCIPL::OciContext::rollback(), OCIPL::SqlStatement::row_count(), OCIPL::OciHandle< OCIServer >::set_attribute(), OCIPL::OciHandle< OCIServer >::set_attribute_handle(), OCIPL::SqlNumber::SqlNumber(), OCIPL::OciLob::trim(), OCIPL::OciClob::write(), and OCIPL::OciLob::~OciLob().

{
    if (res != OCI_SUCCESS)
        throw_oci_exception(errh, res); // doesn't throw an exception for res==OCI_SUCCESS_WITH_INFO
}

Here is the call graph for this function:

Here is the caller graph for this function:

void OCIPL::oci_check_error ( OCIEnv *  envh,
sword  res 
) [inline]

Definition at line 731 of file ocipl.h.

References throw_oci_exception().

{
    if (res != OCI_SUCCESS)
        throw_oci_exception(envh, res); // doesn't throw an exception for res==OCI_SUCCESS_WITH_INFO
}

Here is the call graph for this function:

void OCIPL::oci_check_error ( OciEnv &  env,
sword  res 
) [inline]

Definition at line 738 of file ocipl.h.

References OCIPL::OciEnv::_errh, and oci_check_error().

{
    oci_check_error(env._errh, res);    // doesn't throw an exception for res==OCI_SUCCESS_WITH_INFO
}

Here is the call graph for this function:

struct tm * OCIPL::ocidate_to_gmt ( const OCIDate date ) [read]

Definition at line 670 of file ocipl.cpp.

Referenced by OCIPL::OciDateArray::get_gmt(), and OCIPL::OciDate::get_gmt().

{
    struct tm ltime = {
        date.OCIDateTime.OCITimeSS,
        date.OCIDateTime.OCITimeMI,
        date.OCIDateTime.OCITimeHH,
        date.OCIDateDD,
        date.OCIDateMM - 1,
        date.OCIDateYYYY - 1900,
        -1,
        -1,
        -1
    };

    time_t time = mktime(&ltime);
    assert(time!=-1);

#ifdef __STDC_WANT_SECURE_LIB__
    struct tm newtime;
    gmtime_s(&newtime, &time);
    struct tm* gmt = &newtime;
#else
    struct tm* gmt = gmtime(&time);
#endif

    return gmt;
}

Here is the caller graph for this function:

struct tm * OCIPL::ocidate_to_lctime ( const OCIDate date ) [read]

Definition at line 698 of file ocipl.cpp.

Referenced by OCIPL::OciDateArray::get_lctime(), OCIPL::OciDate::get_lctime(), and ocidate_to_time_t().

{
    struct tm ltime = {
        date.OCIDateTime.OCITimeSS,
        date.OCIDateTime.OCITimeMI,
        date.OCIDateTime.OCITimeHH,
        date.OCIDateDD,
        date.OCIDateMM - 1,
        date.OCIDateYYYY - 1900,
        -1,
        -1,
        -1
    };

    time_t time = mktime(&ltime);
    assert(time!=-1);

#ifdef __STDC_WANT_SECURE_LIB__
    struct tm newtime;
    localtime_s(&newtime, &time);
    struct tm* lct = &newtime;
#else
    struct tm* lct = localtime(&time);
#endif

    return lct;
}

Here is the caller graph for this function:

tstring OCIPL::ocidate_to_short_string ( const OCIDate date )

Definition at line 655 of file ocipl.cpp.

References _stprintf, COUNTOF, TCHAR, and TEXT.

Referenced by OCIPL::OciDateArray::short_str(), and OCIPL::OciDate::short_str().

{
    TCHAR buffer[40];

#ifdef __STDC_WANT_SECURE_LIB__
    _stprintf_s(buffer, COUNTOF(buffer),
#else
    _stprintf(buffer,
#endif
                TEXT("%02d.%02d.%04d"),
                date.OCIDateDD, date.OCIDateMM, date.OCIDateYYYY);

    return buffer;
}

Here is the caller graph for this function:

tstring OCIPL::ocidate_to_string ( const OCIDate date )

Definition at line 639 of file ocipl.cpp.

References _stprintf, COUNTOF, TCHAR, and TEXT.

Referenced by OCIPL::OciDateArray::str(), and OCIPL::OciDate::str().

{
    TCHAR buffer[40];

#ifdef __STDC_WANT_SECURE_LIB__
    _stprintf_s(buffer, COUNTOF(buffer),
#else
    _stprintf(buffer,
#endif
                TEXT("%02d.%02d.%04d %02d:%02d:%02d"),
                date.OCIDateDD, date.OCIDateMM, date.OCIDateYYYY,
                date.OCIDateTime.OCITimeHH, date.OCIDateTime.OCITimeMI, date.OCIDateTime.OCITimeSS);

    return buffer;
}

Here is the caller graph for this function:

time_t OCIPL::ocidate_to_time_t ( const OCIDate date )

Definition at line 726 of file ocipl.cpp.

References ocidate_to_lctime().

Referenced by OCIPL::OciDateArray::get_time_t(), and OCIPL::OciDate::get_time_t().

{
    time_t time = mktime(ocidate_to_lctime(date));
    assert(time!=-1);

    return time;
}

Here is the call graph for this function:

Here is the caller graph for this function:

tstring OCIPL::ocidatetime_to_string ( const ocidatetime &  date )

Definition at line 762 of file ocipl.cpp.

References _stprintf, OCIPL::ocidatetime::century, COUNTOF, OCIPL::ocidatetime::day, OCIPL::ocidatetime::hour, OCIPL::ocidatetime::minute, OCIPL::ocidatetime::month, OCIPL::ocidatetime::second, TCHAR, TEXT, and OCIPL::ocidatetime::year.

Referenced by OCIPL::SqlDateTimeArray::str(), and OCIPL::SqlDateTime::str().

{
    TCHAR buffer[40];

#ifdef __STDC_WANT_SECURE_LIB__
    _stprintf_s(buffer, COUNTOF(buffer),
#else
    _stprintf(buffer,
#endif
                TEXT("%02d.%02d.%04d %02d:%02d:%02d"),
                date.day, date.month, 100*(date.century-100)+(date.year-100),
                date.hour-1, date.minute-1, date.second-1);

    return buffer;
}

Here is the caller graph for this function:

void OCIPL::throw_oci_exception ( OCIEnv *  envh,
sword  res 
)

Definition at line 122 of file ocipl.cpp.

References THROW_OCI_EXCEPTION.

{
    switch(res) {
      case OCI_ERROR:
      case OCI_NO_DATA:
      case OCI_INVALID_HANDLE:
        THROW_OCI_EXCEPTION(envh);

        //@todo handle other error states

    }
}
void OCIPL::throw_oci_exception ( OCIError *  errh,
sword  res 
)

Definition at line 105 of file ocipl.cpp.

References THROW_OCI_EXCEPTION.

Referenced by oci_check_error().

{
    switch(res) {
      case OCI_ERROR:
      case OCI_NO_DATA:
        THROW_OCI_EXCEPTION(errh);
        break;

      case OCI_INVALID_HANDLE:
        THROW_OCI_EXCEPTION("invalid handle");
        break;

        //@todo handle other error states

    }
}

Here is the caller graph for this function:

void OCIPL::throw_ocipl_exception ( OciException  e )

This function is called to throw OCIPL Exceptions in response to Oracle Errors.

You can plug in your own version instead by implementing and linking another throw_ocipl_exception() function.

Definition at line 55 of file ocithrow.cpp.

Referenced by OCIPL::SqlStatement::execute_internal().

{
    throw e;
}

Here is the caller graph for this function:

static tstring OCIPL::tokenize ( const TCHAR **  ptr,
const TCHAR *  sep,
TCHAR  key 
) [static]

Definition at line 2023 of file ocipl.cpp.

References TEXT, and tokenize().

{
    if (**ptr != key)
        return TEXT("");

    ++*ptr;

    return tokenize(ptr, sep);
}

Here is the call graph for this function:

static tstring OCIPL::tokenize ( const TCHAR **  ptr,
const TCHAR *  sep 
) [static]

Definition at line 2007 of file ocipl.cpp.

References _tcslen, _tcspbrk, and TCHAR.

Referenced by OCIPL::LoginPara::parse(), and tokenize().

{
    const TCHAR* start = *ptr;
    const TCHAR* end;

    const TCHAR* found = _tcspbrk(*ptr, sep);

    if (found) {
        end = found;
        *ptr = found;
    } else
        *ptr = end = start + _tcslen(start);

    return tstring(start, end-start);
}

Here is the caller graph for this function:


Variable Documentation

Definition at line 102 of file ocipl.cpp.