ROOT logo
// @(#)root/oracle:$Id: TOracleStatement.cxx 35983 2010-10-01 10:12:54Z pcanal $
// Author: Sergey Linev   6/02/2006


/*************************************************************************
 * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  SQL statement class for Oracle                                      //
//                                                                      //
//  See TSQLStatement class documentation for more details.             //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TOracleStatement.h"
#include "TOracleServer.h"
#include "TDataType.h"
#include <stdlib.h>

ClassImp(TOracleStatement)

//______________________________________________________________________________
TOracleStatement::TOracleStatement(Environment* env, Connection* conn, Statement* stmt, Int_t niter, Bool_t errout) :
   TSQLStatement(errout),
   fEnv(env),
   fConn(conn),
   fStmt(stmt),
   fResult(0),
   fFieldInfo(0),
   fBuffer(0),
   fBufferSize(0),
   fNumIterations(niter),
   fIterCounter(0),
   fWorkingMode(0),
   fTimeFmt(TOracleServer::GetDatimeFormat())
{
   // Normal constructor of TOracleStatement class
   // On creation time specifies buffer length, which should be
   // used in data fetching or data inserting

   if (fStmt) {
      fStmt->setPrefetchMemorySize(1000000);
      fStmt->setPrefetchRowCount(niter);
      fStmt->setMaxIterations(niter);
   }
}

//______________________________________________________________________________
TOracleStatement::~TOracleStatement()
{
   // Destructor of TOracleStatement clas

   Close();
}

//______________________________________________________________________________
void TOracleStatement::Close(Option_t *)
{
   // Close Oracle statement
   // Removes and destroys all buffers and metainfo


   if (fFieldInfo)
      delete fFieldInfo;

   if (fResult && fStmt)
      fStmt->closeResultSet(fResult);

   if (fConn && fStmt)
      fConn->terminateStatement(fStmt);
      
   CloseBuffer();

   fConn = 0;
   fStmt = 0;
   fResult = 0;
   fFieldInfo = 0;
   fIterCounter = 0;
}

// Check that statement is ready for use
#define CheckStatement(method, res)                     \
   {                                                    \
      ClearError();                                     \
      if (fStmt==0) {                                   \
         SetError(-1,"Statement is not correctly initialized",method); \
         return res;                                    \
      }                                                 \
   }

// Check that parameter can be set for statement
#define CheckSetPar(method)                             \
   {                                                    \
      CheckStatement(method, kFALSE);                   \
      if (!IsParSettMode()) {                           \
         SetError(-1,"Parameters cannot be set for this statement", method); \
         return kFALSE;                                 \
      }                                                 \
      if (npar<0) {                                     \
         TString errmsg("Invalid parameter number ");   \
         errmsg+= npar;                                 \
         SetError(-1,errmsg.Data(),method);             \
         return kFALSE;                                 \
      }                                                 \
   }

#define CheckGetField(method, defres)                   \
   {                                                    \
      ClearError();                                     \
      if (!IsResultSet()) {                             \
         SetError(-1,"There is no result set for statement", method); \
         return defres;                                 \
      }                                                 \
      if ((npar<0) || (npar>=fBufferSize)) {                                     \
         TString errmsg("Invalid parameter number ");   \
         errmsg+= npar;                                 \
         SetError(-1,errmsg.Data(),method);             \
         return defres;                                 \
      }                                                 \
   }

//______________________________________________________________________________
void TOracleStatement::SetBufferSize(Int_t size)
{
    // Set buffer size, which is used to keep string values of
    // currently fetched column.

    CloseBuffer();
    if (size<=0) return;
    fBufferSize = size;
    fBuffer = new TBufferRec[size];
    for (Int_t n=0;n<fBufferSize;n++) {
       fBuffer[n].strbuf = 0;
       fBuffer[n].strbufsize = -1;
       fBuffer[n].namebuf = 0;
    }
}

//______________________________________________________________________________
void TOracleStatement::CloseBuffer()
{
   // Destroy buffers, used in data fetching

   if (fBuffer) {
      for (Int_t n=0;n<fBufferSize;n++) {
         delete[] fBuffer[n].strbuf;
         delete[] fBuffer[n].namebuf;
      }

      delete[] fBuffer;
   }
   fBuffer = 0;
   fBufferSize = 0;
}

//______________________________________________________________________________
Bool_t TOracleStatement::Process()
{
   // Process SQL statement
   
   CheckStatement("Process", kFALSE);

   try {

      if (IsParSettMode()) {
         fStmt->executeUpdate();
         fWorkingMode = 0;
      } else {
         fStmt->execute();
      }

      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "Process");
   }

   return kFALSE;
}

//______________________________________________________________________________
Int_t TOracleStatement::GetNumAffectedRows()
{
   // Return number of affected rows after statement Process() was called
   // Make sense for queries like SELECT, INSERT, UPDATE
    
   CheckStatement("GetNumAffectedRows", -1);

   try {
      return fStmt->getUpdateCount();
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetNumAffectedRows");
   }
   return -1;
}


//______________________________________________________________________________
Int_t TOracleStatement::GetNumParameters()
{
   // Return number of parameters in statement
   // Not yet implemented for Oracle 
    
   CheckStatement("GetNumParameters", -1);

   Info("GetParametersNumber","Not implemented");

   return 0;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetNull(Int_t npar)
{
   // Set NULL as value of parameter npar
   
   CheckSetPar("SetNull");

   try {
      fStmt->setNull(npar+1, OCCIINT);

      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetNull");
   }

   return kFALSE;
}


//______________________________________________________________________________
Bool_t TOracleStatement::SetInt(Int_t npar, Int_t value)
{
   // Set integer value for parameter npar
    
   CheckSetPar("SetInt");

   try {
      fStmt->setInt(npar+1, value);

      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetInt");
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetUInt(Int_t npar, UInt_t value)
{
   // Set unsigned integer value for parameter npar

   CheckSetPar("SetUInt");

   try {
      fStmt->setUInt(npar+1, value);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetUInt");
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetLong(Int_t npar, Long_t value)
{
   // Set long integer value for parameter npar

   CheckSetPar("SetLong");

   try {
      fStmt->setNumber(npar+1, Number(value));
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetLong");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetLong64(Int_t npar, Long64_t value)
{
   // Set 64-bit integer value for parameter npar

   CheckSetPar("SetLong64");
   
   try {
      fStmt->setNumber(npar+1, Number((long double)value));
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetLong64");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetULong64(Int_t npar, ULong64_t value)
{
   // Set unsigned 64-bit integer value for parameter npar

   CheckSetPar("SetULong64");

   try {
      fStmt->setNumber(npar+1, Number((long double)value));
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetULong64");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetDouble(Int_t npar, Double_t value)
{
   // Set double value for parameter npar

   CheckSetPar("SetDouble");
   
   try {
      fStmt->setDouble(npar+1, value);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetDouble");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetString(Int_t npar, const char* value, Int_t maxsize)
{
   // Set string value for parameter npar

   CheckSetPar("SetString");

   try {

   // this is when NextIteration is called first time
      if (fIterCounter==1) {
         fStmt->setDatabaseNCHARParam(npar+1, true);
         fStmt->setMaxParamSize(npar+1, maxsize);
      }

      fStmt->setString(npar+1, value);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetString");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetBinary(Int_t npar, void* mem, Long_t size, Long_t maxsize)
{
   // set parameter value as binary data
   
   CheckSetPar("SetBinary");

   try {

      // this is when NextIteration is called first time
      if (fIterCounter==1) 
         fStmt->setMaxParamSize(npar+1, maxsize);
         
      Bytes buf((unsigned char*) mem, size);

      fStmt->setBytes(npar+1, buf);
      
      return kTRUE;

   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetBinary");
   }
   return kFALSE;
}   

//______________________________________________________________________________
Bool_t TOracleStatement::SetDate(Int_t npar, Int_t year, Int_t month, Int_t day)
{
   // Set date value for parameter npar

   CheckSetPar("SetDate");

   try {
      Date tm = fStmt->getDate(npar+1);
      int o_year;
      unsigned int o_month, o_day, o_hour, o_minute, o_second; 
      tm.getDate(o_year, o_month, o_day, o_hour, o_minute, o_second);
      tm.setDate(year, month, day, o_hour, o_minute, o_second);
      fStmt->setDate(npar+1, tm);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetDate");
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetTime(Int_t npar, Int_t hour, Int_t min, Int_t sec)
{
   // Set time value for parameter npar

   CheckSetPar("SetTime");
   
   try {
      Date tm = fStmt->getDate(npar+1);
      int o_year;
      unsigned int o_month, o_day, o_hour, o_minute, o_second; 
      tm.getDate(o_year, o_month, o_day, o_hour, o_minute, o_second);
      tm.setDate(o_year, o_month, o_day, hour, min, sec);
      fStmt->setDate(npar+1, tm);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetTime");
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetDatime(Int_t npar, Int_t year, Int_t month, Int_t day, Int_t hour, Int_t min, Int_t sec)
{
   // Set date & time value for parameter npar

   CheckSetPar("SetDatime");

   try {
      Date tm(fEnv, year, month, day, hour, min, sec);
      fStmt->setDate(npar+1, tm);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetDatime");
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetTimestamp(Int_t npar, Int_t year, Int_t month, Int_t day, Int_t hour, Int_t min, Int_t sec, Int_t frac)
{
   // Set date & time value for parameter npar

   CheckSetPar("SetTimestamp");

   try {
      Timestamp tm(fEnv, year, month, day, hour, min, sec, frac);
      fStmt->setTimestamp(npar+1, tm);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetTimestamp");
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetVInt(Int_t npar, const std::vector<Int_t> value, const char* schemaName, const char* typeName)
{
   // Set vector of integer values for parameter npar
    
   CheckSetPar("SetVInt");

   try {
      setVector(fStmt, npar+1, value, schemaName, typeName);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetVInt");
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetVUInt(Int_t npar, const std::vector<UInt_t> value, const char* schemaName, const char* typeName)
{
   // Set vector of unsigned integer values for parameter npar

   CheckSetPar("SetVUInt");

   try {
      setVector(fStmt, npar+1, value, schemaName, typeName);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetVUInt");
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetVLong(Int_t npar, const std::vector<Long_t> value, const char* schemaName, const char* typeName)
{
   // Set vector of long integer values for parameter npar

   CheckSetPar("SetVLong");

   try {
      std::vector<Number> nvec;
      for (std::vector<Long_t>::const_iterator it = value.begin();
           it != value.end();
           it++) {
         nvec.push_back(Number(*it));
      }
      setVector(fStmt, npar+1, nvec, schemaName, typeName);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetVLong");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetVLong64(Int_t npar, const std::vector<Long64_t> value, const char* schemaName, const char* typeName)
{
   // Set vector of 64-bit integer values for parameter npar

   CheckSetPar("SetVLong64");
   
   try {
      std::vector<Number> nvec;
      for (std::vector<Long64_t>::const_iterator it = value.begin();
           it != value.end();
           it++) {
        nvec.push_back(Number((long double)*it));
      }
      setVector(fStmt, npar+1, nvec, schemaName, typeName);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetVLong64");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetVULong64(Int_t npar, std::vector<ULong64_t> value, const char* schemaName, const char* typeName)
{
   // Set vector of unsigned 64-bit integer values for parameter npar

   CheckSetPar("SetVULong64");

   try {
      std::vector<Number> nvec;
      for (std::vector<ULong64_t>::const_iterator it = value.begin();
           it != value.end();
           it++) {
        nvec.push_back(Number((long double)*it));
      }
      setVector(fStmt, npar+1, nvec, schemaName, typeName);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetVULong64");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetVDouble(Int_t npar, const std::vector<Double_t> value, const char* schemaName, const char* typeName)
{
   // Set vector of double values for parameter npar

   CheckSetPar("SetVDouble");
   
   try {
      setVector(fStmt, npar+1, value, schemaName, typeName);
      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetVDouble");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::NextIteration()
{
   // Add next iteration for statement with parameters

   CheckStatement("NextIteration", kFALSE);

   try {
      fWorkingMode=1;
      // if number of iterations achievs limit, execute it and continue to fill
      if ((fIterCounter % fNumIterations == 0) && (fIterCounter>0)) {
         fStmt->executeUpdate();
      }

      if (fIterCounter % fNumIterations != 0) {
         fStmt->addIteration();
      }

      fIterCounter++;

      return kTRUE;
   } catch (SQLException &oraex)  {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "NextIteration");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::StoreResult()
{
   // Store result of statement processing.
   // Required to access results of SELECT queries 

   CheckStatement("StoreResult", kFALSE);

   try {
      if (fStmt->status() == Statement::RESULT_SET_AVAILABLE) {
         fResult      = fStmt->getResultSet();
         fFieldInfo   = (fResult==0) ? 0 : new std::vector<MetaData>(fResult->getColumnListMetaData());
         Int_t count  = (fFieldInfo==0) ? 0 : fFieldInfo->size();
         SetBufferSize(count);
         if ((fResult!=0) && (count>0)) fWorkingMode = 2;

         return IsResultSet();
      }
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "StoreResult");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::SetMaxFieldSize(Int_t nfield, Long_t maxsize)
{
   // Defines maximum size for field which must be used for read or write operation
   // Some Oracle types as LONG (long binary continer) requires this call
   // before any data can be read from database. Call it once before first call to NextResultRow()
   
   CheckStatement("SetMaxFieldSize", kFALSE);

   try {
      if (fResult)
         fResult->setMaxColumnSize(nfield+1, maxsize);
      else
         fStmt->setMaxParamSize(nfield+1, maxsize);
      return kTRUE;
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "SetMaxFieldSize");
   }

   return kFALSE;
}

//______________________________________________________________________________
Int_t TOracleStatement::GetNumFields()
{
   // Returns number of fields in result set 
    
   return IsResultSet() ?  fBufferSize : -1;
}

//______________________________________________________________________________
const char* TOracleStatement::GetFieldName(Int_t npar)
{
   // Return field name in result set 
    
   CheckGetField("GetFieldName", 0);

   if (!IsResultSet() || (npar<0) || (npar>=fBufferSize)) return 0;

   if (fBuffer[npar].namebuf!=0) return fBuffer[npar].namebuf;

   std::string buff = (*fFieldInfo)[npar].getString(MetaData::ATTR_NAME);

   if (buff.length()==0) return 0;

   fBuffer[npar].namebuf = new char[buff.length()+1];

   strcpy(fBuffer[npar].namebuf, buff.c_str());

   return fBuffer[npar].namebuf;
}

//______________________________________________________________________________
Bool_t TOracleStatement::NextResultRow()
{
   // Move cursor to next row in result set.
   // For Oracle it may lead to additional request to database 
    
   ClearError();
   
   if (fResult==0) {
      SetError(-1,"There is no result set for statement", "NextResultRow");
      return kFALSE;
   }

   if (fResult==0) return kFALSE;

   try {
      for (int n=0;n<fBufferSize;n++) {
        if (fBuffer[n].strbuf) 
           delete[] fBuffer[n].strbuf;
        fBuffer[n].strbuf = 0;
        fBuffer[n].strbufsize = -1;
      }
      if (fResult->next() == oracle::occi::ResultSet::END_OF_FETCH) {
         fWorkingMode = 0;
         CloseBuffer();
         return kFALSE;
      }
      return kTRUE;
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "NextResultRow");
      
      if (oraex.getErrorCode()==32108) 
         Info("NextResultRow", "Use TSQLStatement::SetMaxFieldSize() to solve a problem");
      
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::IsNull(Int_t npar)
{
   // Checks if fieled value in result set is NULL  
    
   CheckGetField("IsNull", kFALSE);

   try {
      return fResult->isNull(npar+1);
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "IsNull");
   }

   return kTRUE;
}

//______________________________________________________________________________
Int_t TOracleStatement::GetInt(Int_t npar)
{
   // return field value as integer
    
   CheckGetField("GetInt", 0);

   Int_t res = 0;

   try {
      if (!fResult->isNull(npar+1))
        res = fResult->getInt(npar+1);
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetInt");
   }

   return res;
}

//______________________________________________________________________________
UInt_t TOracleStatement::GetUInt(Int_t npar)
{
   // return field value as unsigned integer

   CheckGetField("GetUInt", 0);

   UInt_t res = 0;

   try {
      if (!fResult->isNull(npar+1))
        res = fResult->getUInt(npar+1);
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetUInt");
   }

   return res;
}


//______________________________________________________________________________
Long_t TOracleStatement::GetLong(Int_t npar)
{
   // return field value as long integer

   CheckGetField("GetLong", 0);

   Long_t res = 0;

   try {
      if (!fResult->isNull(npar+1))
        res = (Long_t) fResult->getNumber(npar+1);
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetLong");
   }

   return res;
}

//______________________________________________________________________________
Long64_t TOracleStatement::GetLong64(Int_t npar)
{
   // return field value as 64-bit integer

   CheckGetField("GetLong64", 0);

   Long64_t res = 0;

   try {
      if (!fResult->isNull(npar+1))
        res = (Long64_t) (long double) fResult->getNumber(npar+1);
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetLong64");
   }

   return res;
}

//______________________________________________________________________________
ULong64_t TOracleStatement::GetULong64(Int_t npar)
{
   // return field value as unsigned 64-bit integer

   CheckGetField("GetULong64", 0);

   ULong64_t res = 0;

   try {
      if (!fResult->isNull(npar+1))
        res = (ULong64_t) (long double) fResult->getNumber(npar+1);
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetULong64");
   }

   return res;
}

//______________________________________________________________________________
Double_t TOracleStatement::GetDouble(Int_t npar)
{
   // return field value as double

   CheckGetField("GetDouble", 0.);

   Double_t res = 0;

   try {
      if (!fResult->isNull(npar+1))
        res = fResult->getDouble(npar+1);
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetDouble");
   }

   return res;
}

//______________________________________________________________________________
const char* TOracleStatement::GetString(Int_t npar)
{
   // return field value as string

   CheckGetField("GetString", 0);

   if (fBuffer[npar].strbuf!=0) return fBuffer[npar].strbuf;

   try {
      if (fResult->isNull(npar+1)) return 0;

      int datatype = (*fFieldInfo)[npar].getInt(MetaData::ATTR_DATA_TYPE);

      std::string res;

      switch (datatype) {
        case SQLT_NUM: { // oracle numeric NUMBER
           int prec = (*fFieldInfo)[npar].getInt(MetaData::ATTR_PRECISION);
           int scale = (*fFieldInfo)[npar].getInt(MetaData::ATTR_SCALE);

           if ((scale == 0) || (prec == 0)) {
              res = fResult->getString(npar+1);
           } else {
              double double_val = fResult->getDouble(npar+1);
              char str_number[50];
              snprintf(str_number, sizeof(str_number), TSQLServer::GetFloatFormat(), double_val);
              res = str_number;
           }
           break;
        }
        case SQLT_CHR:  // character string
        case SQLT_VCS:  // variable character string
        case SQLT_AFC: // ansi fixed char
        case SQLT_AVC: // ansi var char
           res = fResult->getString(npar+1);
           break;
        case SQLT_DAT:  // Oracle native DATE type
           res = (fResult->getDate(npar+1)).toText(fTimeFmt.Data());
           break;
        case SQLT_TIMESTAMP:     // TIMESTAMP
        case SQLT_TIMESTAMP_TZ:  // TIMESTAMP WITH TIMEZONE
        case SQLT_TIMESTAMP_LTZ: // TIMESTAMP WITH LOCAL TIMEZONE
           res = (fResult->getTimestamp(npar+1)).toText(fTimeFmt.Data(), 0);
           break;
        default:
           res = fResult->getString(npar+1);
           Info("getString","Type %d may not be supported", datatype);
      }

      int len = res.length();

      if (len>0) {
          fBuffer[npar].strbuf = new char[len+1];
          fBuffer[npar].strbufsize = len+1;
          strcpy(fBuffer[npar].strbuf, res.c_str());
      }

      return fBuffer[npar].strbuf;

   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetString");
   }

   return 0;
}

//______________________________________________________________________________
Bool_t TOracleStatement::GetBinary(Int_t npar, void* &mem, Long_t& size)
{
   // Return field value as binary array 
   // Supports LONG, BLOB, CLOB, BFILE, CFILE types of columns
   // Reads complete content of the column, therefore not suitable for
   // big structures

   mem = 0;
   size = 0;

   CheckGetField("GetBinary", kFALSE);

   if (fBuffer[npar].strbufsize>=0) {
      mem = fBuffer[npar].strbuf; 
      size = fBuffer[npar].strbufsize;
      return kTRUE;
   }

   try {
      if (fResult->isNull(npar+1)) return kTRUE;

      int datatype = (*fFieldInfo)[npar].getInt(MetaData::ATTR_DATA_TYPE);
      
      switch (datatype) {
         case SQLT_LNG: {
            Bytes parbytes = fResult->getBytes(npar+1);
            
            size = parbytes.length();
      
            fBuffer[npar].strbufsize = size;
            
            if (size>0) {
               mem = malloc(size); 
               
               fBuffer[npar].strbuf = (char*) mem;
               
               parbytes.getBytes((unsigned char*) mem, size);
            }
            
            break;
         }

         case SQLT_BLOB: {
            Blob parblob = fResult->getBlob(npar+1);
            
            size = parblob.length();
            
            fBuffer[npar].strbufsize = size;
            
            if (size>0) {
               mem = malloc(size); 
               
               fBuffer[npar].strbuf = (char*) mem;
               
               parblob.read(size, (unsigned char*) mem, size);
            }
            
            break;
         }
         
         case SQLT_CLOB: {
            Clob parclob = fResult->getClob(npar+1);
            
            size = parclob.length();
            
            fBuffer[npar].strbufsize = size;
            
            if (size>0) {
               mem = malloc(size); 
               
               fBuffer[npar].strbuf = (char*) mem;
               
               parclob.read(size, (unsigned char*) mem, size);
            }

            break;
         }

         case SQLT_BFILEE: 
         case SQLT_CFILEE: {

            Bfile parbfile = fResult->getBfile(npar+1);
            
            size = parbfile.length();
            
            fBuffer[npar].strbufsize = size;
            
            if (size>0) {
               mem = malloc(size); 
               
               fBuffer[npar].strbuf = (char*) mem;
               
               parbfile.read(size, (unsigned char*) mem, size);
            }
            
            break;
         }
         
         default: 
           Error("GetBinary", "Oracle data type %d not supported", datatype);
           SetError(-1, "Unsupported type for binary convertion", "GetBinary");
           return false;
      }
      
      return kTRUE;
         
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetBinary");
   }
   
   return kFALSE;
}


//______________________________________________________________________________
Bool_t TOracleStatement::GetDate(Int_t npar, Int_t& year, Int_t& month, Int_t& day)
{
   // return field value as date
   
   Int_t hour, min, sec;
   
   return GetDatime(npar, year, month, day, hour, min, sec);
}

//______________________________________________________________________________
Bool_t TOracleStatement::GetTime(Int_t npar, Int_t& hour, Int_t& min, Int_t& sec)
{
   // return field value as time
    
   Int_t year, month, day;

   return GetDatime(npar, year, month, day, hour, min, sec);
}

//______________________________________________________________________________
Bool_t TOracleStatement::GetDatime(Int_t npar, Int_t& year, Int_t& month, Int_t& day, Int_t& hour, Int_t& min, Int_t& sec)
{
   // return field value as date & time
    
   CheckGetField("GetDatime", kFALSE);

   try {
      if (!fResult->isNull(npar+1)) {
         int datatype = (*fFieldInfo)[npar].getInt(MetaData::ATTR_DATA_TYPE);
         
         if (datatype!=SQLT_DAT) return kFALSE;
          
         Date tm = fResult->getDate(npar+1);
         int o_year;
         unsigned int o_month, o_day, o_hour, o_minute, o_second; 
         tm.getDate(o_year, o_month, o_day, o_hour, o_minute, o_second);
         year = (Int_t) o_year;
         month = (Int_t) o_month;
         day = (Int_t) o_day;
         hour = (Int_t) o_hour;
         min = (Int_t) o_minute;
         sec = (Int_t) o_second;
         return kTRUE;
      }
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetDatime");
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::GetTimestamp(Int_t npar, Int_t& year, Int_t& month, Int_t& day, Int_t& hour, Int_t& min, Int_t& sec, Int_t& frac)
{
   // return field value as date & time
    
   CheckGetField("GetTimestamp", kFALSE);

   try {
      if (!fResult->isNull(npar+1)) {
         int datatype = (*fFieldInfo)[npar].getInt(MetaData::ATTR_DATA_TYPE);

         if ((datatype!=SQLT_TIMESTAMP) && 
             (datatype!=SQLT_TIMESTAMP_TZ) && 
             (datatype!=SQLT_TIMESTAMP_LTZ)) return kFALSE;

         Timestamp tm = fResult->getTimestamp(npar+1);
         int o_year;
         unsigned int o_month, o_day, o_hour, o_minute, o_second, o_frac; 
         tm.getDate(o_year, o_month, o_day);
         tm.getTime(o_hour, o_minute, o_second, o_frac);
         year = (Int_t) o_year;
         month = (Int_t) o_month;
         day = (Int_t) o_day;
         hour = (Int_t) o_hour;
         min = (Int_t) o_minute;
         sec = (Int_t) o_second;
         frac = (Int_t) o_frac;
         return kTRUE;  
      }
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetTimestamp");
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::GetVInt(Int_t npar, std::vector<Int_t> &value)
{
   // return field value as vector of integers
   CheckGetField("GetVInt", kFALSE);
   try {
      if (!fResult->isNull(npar+1))
         getVector(fResult, npar+1, value);
      return kTRUE;
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetVInt");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::GetVUInt(Int_t npar, std::vector<UInt_t> &value)
{
   // return field value as vector of unsigned integers
   CheckGetField("GetVUInt", kFALSE);
   try {
      if (!fResult->isNull(npar+1))
         getVector(fResult, npar+1, value);
      return kTRUE;
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetVUInt");
   }
   return kFALSE;
}


//______________________________________________________________________________
Bool_t TOracleStatement::GetVLong(Int_t npar, std::vector<Long_t> &value)
{
   // return field value as vector of long integers
   CheckGetField("GetVLong", kFALSE);
   try {
      std::vector<Number> res;
      if (!fResult->isNull(npar+1))
         getVector(fResult, npar+1, res);
      for (std::vector<Number>::const_iterator it = res.begin();
           it != res.end();
           it++ ) {
         value.push_back((Long_t)*it);
      }
      return kTRUE;
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetVLong");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::GetVLong64(Int_t npar, std::vector<Long64_t> &value)
{
   // return field value as vector of 64-bit integers
   CheckGetField("GetVLong64", kFALSE);
   try {
      std::vector<Number> res;
      if (!fResult->isNull(npar+1))
         getVector(fResult, npar+1, res);
      for (std::vector<Number>::const_iterator it = res.begin();
           it != res.end();
           it++ ) {
         value.push_back((Long_t)*it);
      }
      return kTRUE;
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetVLong64");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::GetVULong64(Int_t npar, std::vector<ULong64_t> &value)
{
   // return field value as vector of unsigned 64-bit integers
   CheckGetField("GetVULong64", kFALSE);
   try {
      std::vector<Number> res;
      if (!fResult->isNull(npar+1))
         getVector(fResult, npar+1, res);
      for (std::vector<Number>::const_iterator it = res.begin();
           it != res.end();
           it++ ) {
        value.push_back((Long_t)(long double)*it);
      }
      return kTRUE;
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetVULong64");
   }
   return kFALSE;
}

//______________________________________________________________________________
Bool_t TOracleStatement::GetVDouble(Int_t npar, std::vector<Double_t> &value)
{
   // return field value as vector of doubles
   CheckGetField("GetVDouble", kFALSE);
   try {
      if (!fResult->isNull(npar+1))
         getVector(fResult, npar+1, value);
      return kTRUE;
   } catch (SQLException &oraex) {
      SetError(oraex.getErrorCode(), oraex.getMessage().c_str(), "GetVDouble");
   }
   return kFALSE;
}

 TOracleStatement.cxx:1
 TOracleStatement.cxx:2
 TOracleStatement.cxx:3
 TOracleStatement.cxx:4
 TOracleStatement.cxx:5
 TOracleStatement.cxx:6
 TOracleStatement.cxx:7
 TOracleStatement.cxx:8
 TOracleStatement.cxx:9
 TOracleStatement.cxx:10
 TOracleStatement.cxx:11
 TOracleStatement.cxx:12
 TOracleStatement.cxx:13
 TOracleStatement.cxx:14
 TOracleStatement.cxx:15
 TOracleStatement.cxx:16
 TOracleStatement.cxx:17
 TOracleStatement.cxx:18
 TOracleStatement.cxx:19
 TOracleStatement.cxx:20
 TOracleStatement.cxx:21
 TOracleStatement.cxx:22
 TOracleStatement.cxx:23
 TOracleStatement.cxx:24
 TOracleStatement.cxx:25
 TOracleStatement.cxx:26
 TOracleStatement.cxx:27
 TOracleStatement.cxx:28
 TOracleStatement.cxx:29
 TOracleStatement.cxx:30
 TOracleStatement.cxx:31
 TOracleStatement.cxx:32
 TOracleStatement.cxx:33
 TOracleStatement.cxx:34
 TOracleStatement.cxx:35
 TOracleStatement.cxx:36
 TOracleStatement.cxx:37
 TOracleStatement.cxx:38
 TOracleStatement.cxx:39
 TOracleStatement.cxx:40
 TOracleStatement.cxx:41
 TOracleStatement.cxx:42
 TOracleStatement.cxx:43
 TOracleStatement.cxx:44
 TOracleStatement.cxx:45
 TOracleStatement.cxx:46
 TOracleStatement.cxx:47
 TOracleStatement.cxx:48
 TOracleStatement.cxx:49
 TOracleStatement.cxx:50
 TOracleStatement.cxx:51
 TOracleStatement.cxx:52
 TOracleStatement.cxx:53
 TOracleStatement.cxx:54
 TOracleStatement.cxx:55
 TOracleStatement.cxx:56
 TOracleStatement.cxx:57
 TOracleStatement.cxx:58
 TOracleStatement.cxx:59
 TOracleStatement.cxx:60
 TOracleStatement.cxx:61
 TOracleStatement.cxx:62
 TOracleStatement.cxx:63
 TOracleStatement.cxx:64
 TOracleStatement.cxx:65
 TOracleStatement.cxx:66
 TOracleStatement.cxx:67
 TOracleStatement.cxx:68
 TOracleStatement.cxx:69
 TOracleStatement.cxx:70
 TOracleStatement.cxx:71
 TOracleStatement.cxx:72
 TOracleStatement.cxx:73
 TOracleStatement.cxx:74
 TOracleStatement.cxx:75
 TOracleStatement.cxx:76
 TOracleStatement.cxx:77
 TOracleStatement.cxx:78
 TOracleStatement.cxx:79
 TOracleStatement.cxx:80
 TOracleStatement.cxx:81
 TOracleStatement.cxx:82
 TOracleStatement.cxx:83
 TOracleStatement.cxx:84
 TOracleStatement.cxx:85
 TOracleStatement.cxx:86
 TOracleStatement.cxx:87
 TOracleStatement.cxx:88
 TOracleStatement.cxx:89
 TOracleStatement.cxx:90
 TOracleStatement.cxx:91
 TOracleStatement.cxx:92
 TOracleStatement.cxx:93
 TOracleStatement.cxx:94
 TOracleStatement.cxx:95
 TOracleStatement.cxx:96
 TOracleStatement.cxx:97
 TOracleStatement.cxx:98
 TOracleStatement.cxx:99
 TOracleStatement.cxx:100
 TOracleStatement.cxx:101
 TOracleStatement.cxx:102
 TOracleStatement.cxx:103
 TOracleStatement.cxx:104
 TOracleStatement.cxx:105
 TOracleStatement.cxx:106
 TOracleStatement.cxx:107
 TOracleStatement.cxx:108
 TOracleStatement.cxx:109
 TOracleStatement.cxx:110
 TOracleStatement.cxx:111
 TOracleStatement.cxx:112
 TOracleStatement.cxx:113
 TOracleStatement.cxx:114
 TOracleStatement.cxx:115
 TOracleStatement.cxx:116
 TOracleStatement.cxx:117
 TOracleStatement.cxx:118
 TOracleStatement.cxx:119
 TOracleStatement.cxx:120
 TOracleStatement.cxx:121
 TOracleStatement.cxx:122
 TOracleStatement.cxx:123
 TOracleStatement.cxx:124
 TOracleStatement.cxx:125
 TOracleStatement.cxx:126
 TOracleStatement.cxx:127
 TOracleStatement.cxx:128
 TOracleStatement.cxx:129
 TOracleStatement.cxx:130
 TOracleStatement.cxx:131
 TOracleStatement.cxx:132
 TOracleStatement.cxx:133
 TOracleStatement.cxx:134
 TOracleStatement.cxx:135
 TOracleStatement.cxx:136
 TOracleStatement.cxx:137
 TOracleStatement.cxx:138
 TOracleStatement.cxx:139
 TOracleStatement.cxx:140
 TOracleStatement.cxx:141
 TOracleStatement.cxx:142
 TOracleStatement.cxx:143
 TOracleStatement.cxx:144
 TOracleStatement.cxx:145
 TOracleStatement.cxx:146
 TOracleStatement.cxx:147
 TOracleStatement.cxx:148
 TOracleStatement.cxx:149
 TOracleStatement.cxx:150
 TOracleStatement.cxx:151
 TOracleStatement.cxx:152
 TOracleStatement.cxx:153
 TOracleStatement.cxx:154
 TOracleStatement.cxx:155
 TOracleStatement.cxx:156
 TOracleStatement.cxx:157
 TOracleStatement.cxx:158
 TOracleStatement.cxx:159
 TOracleStatement.cxx:160
 TOracleStatement.cxx:161
 TOracleStatement.cxx:162
 TOracleStatement.cxx:163
 TOracleStatement.cxx:164
 TOracleStatement.cxx:165
 TOracleStatement.cxx:166
 TOracleStatement.cxx:167
 TOracleStatement.cxx:168
 TOracleStatement.cxx:169
 TOracleStatement.cxx:170
 TOracleStatement.cxx:171
 TOracleStatement.cxx:172
 TOracleStatement.cxx:173
 TOracleStatement.cxx:174
 TOracleStatement.cxx:175
 TOracleStatement.cxx:176
 TOracleStatement.cxx:177
 TOracleStatement.cxx:178
 TOracleStatement.cxx:179
 TOracleStatement.cxx:180
 TOracleStatement.cxx:181
 TOracleStatement.cxx:182
 TOracleStatement.cxx:183
 TOracleStatement.cxx:184
 TOracleStatement.cxx:185
 TOracleStatement.cxx:186
 TOracleStatement.cxx:187
 TOracleStatement.cxx:188
 TOracleStatement.cxx:189
 TOracleStatement.cxx:190
 TOracleStatement.cxx:191
 TOracleStatement.cxx:192
 TOracleStatement.cxx:193
 TOracleStatement.cxx:194
 TOracleStatement.cxx:195
 TOracleStatement.cxx:196
 TOracleStatement.cxx:197
 TOracleStatement.cxx:198
 TOracleStatement.cxx:199
 TOracleStatement.cxx:200
 TOracleStatement.cxx:201
 TOracleStatement.cxx:202
 TOracleStatement.cxx:203
 TOracleStatement.cxx:204
 TOracleStatement.cxx:205
 TOracleStatement.cxx:206
 TOracleStatement.cxx:207
 TOracleStatement.cxx:208
 TOracleStatement.cxx:209
 TOracleStatement.cxx:210
 TOracleStatement.cxx:211
 TOracleStatement.cxx:212
 TOracleStatement.cxx:213
 TOracleStatement.cxx:214
 TOracleStatement.cxx:215
 TOracleStatement.cxx:216
 TOracleStatement.cxx:217
 TOracleStatement.cxx:218
 TOracleStatement.cxx:219
 TOracleStatement.cxx:220
 TOracleStatement.cxx:221
 TOracleStatement.cxx:222
 TOracleStatement.cxx:223
 TOracleStatement.cxx:224
 TOracleStatement.cxx:225
 TOracleStatement.cxx:226
 TOracleStatement.cxx:227
 TOracleStatement.cxx:228
 TOracleStatement.cxx:229
 TOracleStatement.cxx:230
 TOracleStatement.cxx:231
 TOracleStatement.cxx:232
 TOracleStatement.cxx:233
 TOracleStatement.cxx:234
 TOracleStatement.cxx:235
 TOracleStatement.cxx:236
 TOracleStatement.cxx:237
 TOracleStatement.cxx:238
 TOracleStatement.cxx:239
 TOracleStatement.cxx:240
 TOracleStatement.cxx:241
 TOracleStatement.cxx:242
 TOracleStatement.cxx:243
 TOracleStatement.cxx:244
 TOracleStatement.cxx:245
 TOracleStatement.cxx:246
 TOracleStatement.cxx:247
 TOracleStatement.cxx:248
 TOracleStatement.cxx:249
 TOracleStatement.cxx:250
 TOracleStatement.cxx:251
 TOracleStatement.cxx:252
 TOracleStatement.cxx:253
 TOracleStatement.cxx:254
 TOracleStatement.cxx:255
 TOracleStatement.cxx:256
 TOracleStatement.cxx:257
 TOracleStatement.cxx:258
 TOracleStatement.cxx:259
 TOracleStatement.cxx:260
 TOracleStatement.cxx:261
 TOracleStatement.cxx:262
 TOracleStatement.cxx:263
 TOracleStatement.cxx:264
 TOracleStatement.cxx:265
 TOracleStatement.cxx:266
 TOracleStatement.cxx:267
 TOracleStatement.cxx:268
 TOracleStatement.cxx:269
 TOracleStatement.cxx:270
 TOracleStatement.cxx:271
 TOracleStatement.cxx:272
 TOracleStatement.cxx:273
 TOracleStatement.cxx:274
 TOracleStatement.cxx:275
 TOracleStatement.cxx:276
 TOracleStatement.cxx:277
 TOracleStatement.cxx:278
 TOracleStatement.cxx:279
 TOracleStatement.cxx:280
 TOracleStatement.cxx:281
 TOracleStatement.cxx:282
 TOracleStatement.cxx:283
 TOracleStatement.cxx:284
 TOracleStatement.cxx:285
 TOracleStatement.cxx:286
 TOracleStatement.cxx:287
 TOracleStatement.cxx:288
 TOracleStatement.cxx:289
 TOracleStatement.cxx:290
 TOracleStatement.cxx:291
 TOracleStatement.cxx:292
 TOracleStatement.cxx:293
 TOracleStatement.cxx:294
 TOracleStatement.cxx:295
 TOracleStatement.cxx:296
 TOracleStatement.cxx:297
 TOracleStatement.cxx:298
 TOracleStatement.cxx:299
 TOracleStatement.cxx:300
 TOracleStatement.cxx:301
 TOracleStatement.cxx:302
 TOracleStatement.cxx:303
 TOracleStatement.cxx:304
 TOracleStatement.cxx:305
 TOracleStatement.cxx:306
 TOracleStatement.cxx:307
 TOracleStatement.cxx:308
 TOracleStatement.cxx:309
 TOracleStatement.cxx:310
 TOracleStatement.cxx:311
 TOracleStatement.cxx:312
 TOracleStatement.cxx:313
 TOracleStatement.cxx:314
 TOracleStatement.cxx:315
 TOracleStatement.cxx:316
 TOracleStatement.cxx:317
 TOracleStatement.cxx:318
 TOracleStatement.cxx:319
 TOracleStatement.cxx:320
 TOracleStatement.cxx:321
 TOracleStatement.cxx:322
 TOracleStatement.cxx:323
 TOracleStatement.cxx:324
 TOracleStatement.cxx:325
 TOracleStatement.cxx:326
 TOracleStatement.cxx:327
 TOracleStatement.cxx:328
 TOracleStatement.cxx:329
 TOracleStatement.cxx:330
 TOracleStatement.cxx:331
 TOracleStatement.cxx:332
 TOracleStatement.cxx:333
 TOracleStatement.cxx:334
 TOracleStatement.cxx:335
 TOracleStatement.cxx:336
 TOracleStatement.cxx:337
 TOracleStatement.cxx:338
 TOracleStatement.cxx:339
 TOracleStatement.cxx:340
 TOracleStatement.cxx:341
 TOracleStatement.cxx:342
 TOracleStatement.cxx:343
 TOracleStatement.cxx:344
 TOracleStatement.cxx:345
 TOracleStatement.cxx:346
 TOracleStatement.cxx:347
 TOracleStatement.cxx:348
 TOracleStatement.cxx:349
 TOracleStatement.cxx:350
 TOracleStatement.cxx:351
 TOracleStatement.cxx:352
 TOracleStatement.cxx:353
 TOracleStatement.cxx:354
 TOracleStatement.cxx:355
 TOracleStatement.cxx:356
 TOracleStatement.cxx:357
 TOracleStatement.cxx:358
 TOracleStatement.cxx:359
 TOracleStatement.cxx:360
 TOracleStatement.cxx:361
 TOracleStatement.cxx:362
 TOracleStatement.cxx:363
 TOracleStatement.cxx:364
 TOracleStatement.cxx:365
 TOracleStatement.cxx:366
 TOracleStatement.cxx:367
 TOracleStatement.cxx:368
 TOracleStatement.cxx:369
 TOracleStatement.cxx:370
 TOracleStatement.cxx:371
 TOracleStatement.cxx:372
 TOracleStatement.cxx:373
 TOracleStatement.cxx:374
 TOracleStatement.cxx:375
 TOracleStatement.cxx:376
 TOracleStatement.cxx:377
 TOracleStatement.cxx:378
 TOracleStatement.cxx:379
 TOracleStatement.cxx:380
 TOracleStatement.cxx:381
 TOracleStatement.cxx:382
 TOracleStatement.cxx:383
 TOracleStatement.cxx:384
 TOracleStatement.cxx:385
 TOracleStatement.cxx:386
 TOracleStatement.cxx:387
 TOracleStatement.cxx:388
 TOracleStatement.cxx:389
 TOracleStatement.cxx:390
 TOracleStatement.cxx:391
 TOracleStatement.cxx:392
 TOracleStatement.cxx:393
 TOracleStatement.cxx:394
 TOracleStatement.cxx:395
 TOracleStatement.cxx:396
 TOracleStatement.cxx:397
 TOracleStatement.cxx:398
 TOracleStatement.cxx:399
 TOracleStatement.cxx:400
 TOracleStatement.cxx:401
 TOracleStatement.cxx:402
 TOracleStatement.cxx:403
 TOracleStatement.cxx:404
 TOracleStatement.cxx:405
 TOracleStatement.cxx:406
 TOracleStatement.cxx:407
 TOracleStatement.cxx:408
 TOracleStatement.cxx:409
 TOracleStatement.cxx:410
 TOracleStatement.cxx:411
 TOracleStatement.cxx:412
 TOracleStatement.cxx:413
 TOracleStatement.cxx:414
 TOracleStatement.cxx:415
 TOracleStatement.cxx:416
 TOracleStatement.cxx:417
 TOracleStatement.cxx:418
 TOracleStatement.cxx:419
 TOracleStatement.cxx:420
 TOracleStatement.cxx:421
 TOracleStatement.cxx:422
 TOracleStatement.cxx:423
 TOracleStatement.cxx:424
 TOracleStatement.cxx:425
 TOracleStatement.cxx:426
 TOracleStatement.cxx:427
 TOracleStatement.cxx:428
 TOracleStatement.cxx:429
 TOracleStatement.cxx:430
 TOracleStatement.cxx:431
 TOracleStatement.cxx:432
 TOracleStatement.cxx:433
 TOracleStatement.cxx:434
 TOracleStatement.cxx:435
 TOracleStatement.cxx:436
 TOracleStatement.cxx:437
 TOracleStatement.cxx:438
 TOracleStatement.cxx:439
 TOracleStatement.cxx:440
 TOracleStatement.cxx:441
 TOracleStatement.cxx:442
 TOracleStatement.cxx:443
 TOracleStatement.cxx:444
 TOracleStatement.cxx:445
 TOracleStatement.cxx:446
 TOracleStatement.cxx:447
 TOracleStatement.cxx:448
 TOracleStatement.cxx:449
 TOracleStatement.cxx:450
 TOracleStatement.cxx:451
 TOracleStatement.cxx:452
 TOracleStatement.cxx:453
 TOracleStatement.cxx:454
 TOracleStatement.cxx:455
 TOracleStatement.cxx:456
 TOracleStatement.cxx:457
 TOracleStatement.cxx:458
 TOracleStatement.cxx:459
 TOracleStatement.cxx:460
 TOracleStatement.cxx:461
 TOracleStatement.cxx:462
 TOracleStatement.cxx:463
 TOracleStatement.cxx:464
 TOracleStatement.cxx:465
 TOracleStatement.cxx:466
 TOracleStatement.cxx:467
 TOracleStatement.cxx:468
 TOracleStatement.cxx:469
 TOracleStatement.cxx:470
 TOracleStatement.cxx:471
 TOracleStatement.cxx:472
 TOracleStatement.cxx:473
 TOracleStatement.cxx:474
 TOracleStatement.cxx:475
 TOracleStatement.cxx:476
 TOracleStatement.cxx:477
 TOracleStatement.cxx:478
 TOracleStatement.cxx:479
 TOracleStatement.cxx:480
 TOracleStatement.cxx:481
 TOracleStatement.cxx:482
 TOracleStatement.cxx:483
 TOracleStatement.cxx:484
 TOracleStatement.cxx:485
 TOracleStatement.cxx:486
 TOracleStatement.cxx:487
 TOracleStatement.cxx:488
 TOracleStatement.cxx:489
 TOracleStatement.cxx:490
 TOracleStatement.cxx:491
 TOracleStatement.cxx:492
 TOracleStatement.cxx:493
 TOracleStatement.cxx:494
 TOracleStatement.cxx:495
 TOracleStatement.cxx:496
 TOracleStatement.cxx:497
 TOracleStatement.cxx:498
 TOracleStatement.cxx:499
 TOracleStatement.cxx:500
 TOracleStatement.cxx:501
 TOracleStatement.cxx:502
 TOracleStatement.cxx:503
 TOracleStatement.cxx:504
 TOracleStatement.cxx:505
 TOracleStatement.cxx:506
 TOracleStatement.cxx:507
 TOracleStatement.cxx:508
 TOracleStatement.cxx:509
 TOracleStatement.cxx:510
 TOracleStatement.cxx:511
 TOracleStatement.cxx:512
 TOracleStatement.cxx:513
 TOracleStatement.cxx:514
 TOracleStatement.cxx:515
 TOracleStatement.cxx:516
 TOracleStatement.cxx:517
 TOracleStatement.cxx:518
 TOracleStatement.cxx:519
 TOracleStatement.cxx:520
 TOracleStatement.cxx:521
 TOracleStatement.cxx:522
 TOracleStatement.cxx:523
 TOracleStatement.cxx:524
 TOracleStatement.cxx:525
 TOracleStatement.cxx:526
 TOracleStatement.cxx:527
 TOracleStatement.cxx:528
 TOracleStatement.cxx:529
 TOracleStatement.cxx:530
 TOracleStatement.cxx:531
 TOracleStatement.cxx:532
 TOracleStatement.cxx:533
 TOracleStatement.cxx:534
 TOracleStatement.cxx:535
 TOracleStatement.cxx:536
 TOracleStatement.cxx:537
 TOracleStatement.cxx:538
 TOracleStatement.cxx:539
 TOracleStatement.cxx:540
 TOracleStatement.cxx:541
 TOracleStatement.cxx:542
 TOracleStatement.cxx:543
 TOracleStatement.cxx:544
 TOracleStatement.cxx:545
 TOracleStatement.cxx:546
 TOracleStatement.cxx:547
 TOracleStatement.cxx:548
 TOracleStatement.cxx:549
 TOracleStatement.cxx:550
 TOracleStatement.cxx:551
 TOracleStatement.cxx:552
 TOracleStatement.cxx:553
 TOracleStatement.cxx:554
 TOracleStatement.cxx:555
 TOracleStatement.cxx:556
 TOracleStatement.cxx:557
 TOracleStatement.cxx:558
 TOracleStatement.cxx:559
 TOracleStatement.cxx:560
 TOracleStatement.cxx:561
 TOracleStatement.cxx:562
 TOracleStatement.cxx:563
 TOracleStatement.cxx:564
 TOracleStatement.cxx:565
 TOracleStatement.cxx:566
 TOracleStatement.cxx:567
 TOracleStatement.cxx:568
 TOracleStatement.cxx:569
 TOracleStatement.cxx:570
 TOracleStatement.cxx:571
 TOracleStatement.cxx:572
 TOracleStatement.cxx:573
 TOracleStatement.cxx:574
 TOracleStatement.cxx:575
 TOracleStatement.cxx:576
 TOracleStatement.cxx:577
 TOracleStatement.cxx:578
 TOracleStatement.cxx:579
 TOracleStatement.cxx:580
 TOracleStatement.cxx:581
 TOracleStatement.cxx:582
 TOracleStatement.cxx:583
 TOracleStatement.cxx:584
 TOracleStatement.cxx:585
 TOracleStatement.cxx:586
 TOracleStatement.cxx:587
 TOracleStatement.cxx:588
 TOracleStatement.cxx:589
 TOracleStatement.cxx:590
 TOracleStatement.cxx:591
 TOracleStatement.cxx:592
 TOracleStatement.cxx:593
 TOracleStatement.cxx:594
 TOracleStatement.cxx:595
 TOracleStatement.cxx:596
 TOracleStatement.cxx:597
 TOracleStatement.cxx:598
 TOracleStatement.cxx:599
 TOracleStatement.cxx:600
 TOracleStatement.cxx:601
 TOracleStatement.cxx:602
 TOracleStatement.cxx:603
 TOracleStatement.cxx:604
 TOracleStatement.cxx:605
 TOracleStatement.cxx:606
 TOracleStatement.cxx:607
 TOracleStatement.cxx:608
 TOracleStatement.cxx:609
 TOracleStatement.cxx:610
 TOracleStatement.cxx:611
 TOracleStatement.cxx:612
 TOracleStatement.cxx:613
 TOracleStatement.cxx:614
 TOracleStatement.cxx:615
 TOracleStatement.cxx:616
 TOracleStatement.cxx:617
 TOracleStatement.cxx:618
 TOracleStatement.cxx:619
 TOracleStatement.cxx:620
 TOracleStatement.cxx:621
 TOracleStatement.cxx:622
 TOracleStatement.cxx:623
 TOracleStatement.cxx:624
 TOracleStatement.cxx:625
 TOracleStatement.cxx:626
 TOracleStatement.cxx:627
 TOracleStatement.cxx:628
 TOracleStatement.cxx:629
 TOracleStatement.cxx:630
 TOracleStatement.cxx:631
 TOracleStatement.cxx:632
 TOracleStatement.cxx:633
 TOracleStatement.cxx:634
 TOracleStatement.cxx:635
 TOracleStatement.cxx:636
 TOracleStatement.cxx:637
 TOracleStatement.cxx:638
 TOracleStatement.cxx:639
 TOracleStatement.cxx:640
 TOracleStatement.cxx:641
 TOracleStatement.cxx:642
 TOracleStatement.cxx:643
 TOracleStatement.cxx:644
 TOracleStatement.cxx:645
 TOracleStatement.cxx:646
 TOracleStatement.cxx:647
 TOracleStatement.cxx:648
 TOracleStatement.cxx:649
 TOracleStatement.cxx:650
 TOracleStatement.cxx:651
 TOracleStatement.cxx:652
 TOracleStatement.cxx:653
 TOracleStatement.cxx:654
 TOracleStatement.cxx:655
 TOracleStatement.cxx:656
 TOracleStatement.cxx:657
 TOracleStatement.cxx:658
 TOracleStatement.cxx:659
 TOracleStatement.cxx:660
 TOracleStatement.cxx:661
 TOracleStatement.cxx:662
 TOracleStatement.cxx:663
 TOracleStatement.cxx:664
 TOracleStatement.cxx:665
 TOracleStatement.cxx:666
 TOracleStatement.cxx:667
 TOracleStatement.cxx:668
 TOracleStatement.cxx:669
 TOracleStatement.cxx:670
 TOracleStatement.cxx:671
 TOracleStatement.cxx:672
 TOracleStatement.cxx:673
 TOracleStatement.cxx:674
 TOracleStatement.cxx:675
 TOracleStatement.cxx:676
 TOracleStatement.cxx:677
 TOracleStatement.cxx:678
 TOracleStatement.cxx:679
 TOracleStatement.cxx:680
 TOracleStatement.cxx:681
 TOracleStatement.cxx:682
 TOracleStatement.cxx:683
 TOracleStatement.cxx:684
 TOracleStatement.cxx:685
 TOracleStatement.cxx:686
 TOracleStatement.cxx:687
 TOracleStatement.cxx:688
 TOracleStatement.cxx:689
 TOracleStatement.cxx:690
 TOracleStatement.cxx:691
 TOracleStatement.cxx:692
 TOracleStatement.cxx:693
 TOracleStatement.cxx:694
 TOracleStatement.cxx:695
 TOracleStatement.cxx:696
 TOracleStatement.cxx:697
 TOracleStatement.cxx:698
 TOracleStatement.cxx:699
 TOracleStatement.cxx:700
 TOracleStatement.cxx:701
 TOracleStatement.cxx:702
 TOracleStatement.cxx:703
 TOracleStatement.cxx:704
 TOracleStatement.cxx:705
 TOracleStatement.cxx:706
 TOracleStatement.cxx:707
 TOracleStatement.cxx:708
 TOracleStatement.cxx:709
 TOracleStatement.cxx:710
 TOracleStatement.cxx:711
 TOracleStatement.cxx:712
 TOracleStatement.cxx:713
 TOracleStatement.cxx:714
 TOracleStatement.cxx:715
 TOracleStatement.cxx:716
 TOracleStatement.cxx:717
 TOracleStatement.cxx:718
 TOracleStatement.cxx:719
 TOracleStatement.cxx:720
 TOracleStatement.cxx:721
 TOracleStatement.cxx:722
 TOracleStatement.cxx:723
 TOracleStatement.cxx:724
 TOracleStatement.cxx:725
 TOracleStatement.cxx:726
 TOracleStatement.cxx:727
 TOracleStatement.cxx:728
 TOracleStatement.cxx:729
 TOracleStatement.cxx:730
 TOracleStatement.cxx:731
 TOracleStatement.cxx:732
 TOracleStatement.cxx:733
 TOracleStatement.cxx:734
 TOracleStatement.cxx:735
 TOracleStatement.cxx:736
 TOracleStatement.cxx:737
 TOracleStatement.cxx:738
 TOracleStatement.cxx:739
 TOracleStatement.cxx:740
 TOracleStatement.cxx:741
 TOracleStatement.cxx:742
 TOracleStatement.cxx:743
 TOracleStatement.cxx:744
 TOracleStatement.cxx:745
 TOracleStatement.cxx:746
 TOracleStatement.cxx:747
 TOracleStatement.cxx:748
 TOracleStatement.cxx:749
 TOracleStatement.cxx:750
 TOracleStatement.cxx:751
 TOracleStatement.cxx:752
 TOracleStatement.cxx:753
 TOracleStatement.cxx:754
 TOracleStatement.cxx:755
 TOracleStatement.cxx:756
 TOracleStatement.cxx:757
 TOracleStatement.cxx:758
 TOracleStatement.cxx:759
 TOracleStatement.cxx:760
 TOracleStatement.cxx:761
 TOracleStatement.cxx:762
 TOracleStatement.cxx:763
 TOracleStatement.cxx:764
 TOracleStatement.cxx:765
 TOracleStatement.cxx:766
 TOracleStatement.cxx:767
 TOracleStatement.cxx:768
 TOracleStatement.cxx:769
 TOracleStatement.cxx:770
 TOracleStatement.cxx:771
 TOracleStatement.cxx:772
 TOracleStatement.cxx:773
 TOracleStatement.cxx:774
 TOracleStatement.cxx:775
 TOracleStatement.cxx:776
 TOracleStatement.cxx:777
 TOracleStatement.cxx:778
 TOracleStatement.cxx:779
 TOracleStatement.cxx:780
 TOracleStatement.cxx:781
 TOracleStatement.cxx:782
 TOracleStatement.cxx:783
 TOracleStatement.cxx:784
 TOracleStatement.cxx:785
 TOracleStatement.cxx:786
 TOracleStatement.cxx:787
 TOracleStatement.cxx:788
 TOracleStatement.cxx:789
 TOracleStatement.cxx:790
 TOracleStatement.cxx:791
 TOracleStatement.cxx:792
 TOracleStatement.cxx:793
 TOracleStatement.cxx:794
 TOracleStatement.cxx:795
 TOracleStatement.cxx:796
 TOracleStatement.cxx:797
 TOracleStatement.cxx:798
 TOracleStatement.cxx:799
 TOracleStatement.cxx:800
 TOracleStatement.cxx:801
 TOracleStatement.cxx:802
 TOracleStatement.cxx:803
 TOracleStatement.cxx:804
 TOracleStatement.cxx:805
 TOracleStatement.cxx:806
 TOracleStatement.cxx:807
 TOracleStatement.cxx:808
 TOracleStatement.cxx:809
 TOracleStatement.cxx:810
 TOracleStatement.cxx:811
 TOracleStatement.cxx:812
 TOracleStatement.cxx:813
 TOracleStatement.cxx:814
 TOracleStatement.cxx:815
 TOracleStatement.cxx:816
 TOracleStatement.cxx:817
 TOracleStatement.cxx:818
 TOracleStatement.cxx:819
 TOracleStatement.cxx:820
 TOracleStatement.cxx:821
 TOracleStatement.cxx:822
 TOracleStatement.cxx:823
 TOracleStatement.cxx:824
 TOracleStatement.cxx:825
 TOracleStatement.cxx:826
 TOracleStatement.cxx:827
 TOracleStatement.cxx:828
 TOracleStatement.cxx:829
 TOracleStatement.cxx:830
 TOracleStatement.cxx:831
 TOracleStatement.cxx:832
 TOracleStatement.cxx:833
 TOracleStatement.cxx:834
 TOracleStatement.cxx:835
 TOracleStatement.cxx:836
 TOracleStatement.cxx:837
 TOracleStatement.cxx:838
 TOracleStatement.cxx:839
 TOracleStatement.cxx:840
 TOracleStatement.cxx:841
 TOracleStatement.cxx:842
 TOracleStatement.cxx:843
 TOracleStatement.cxx:844
 TOracleStatement.cxx:845
 TOracleStatement.cxx:846
 TOracleStatement.cxx:847
 TOracleStatement.cxx:848
 TOracleStatement.cxx:849
 TOracleStatement.cxx:850
 TOracleStatement.cxx:851
 TOracleStatement.cxx:852
 TOracleStatement.cxx:853
 TOracleStatement.cxx:854
 TOracleStatement.cxx:855
 TOracleStatement.cxx:856
 TOracleStatement.cxx:857
 TOracleStatement.cxx:858
 TOracleStatement.cxx:859
 TOracleStatement.cxx:860
 TOracleStatement.cxx:861
 TOracleStatement.cxx:862
 TOracleStatement.cxx:863
 TOracleStatement.cxx:864
 TOracleStatement.cxx:865
 TOracleStatement.cxx:866
 TOracleStatement.cxx:867
 TOracleStatement.cxx:868
 TOracleStatement.cxx:869
 TOracleStatement.cxx:870
 TOracleStatement.cxx:871
 TOracleStatement.cxx:872
 TOracleStatement.cxx:873
 TOracleStatement.cxx:874
 TOracleStatement.cxx:875
 TOracleStatement.cxx:876
 TOracleStatement.cxx:877
 TOracleStatement.cxx:878
 TOracleStatement.cxx:879
 TOracleStatement.cxx:880
 TOracleStatement.cxx:881
 TOracleStatement.cxx:882
 TOracleStatement.cxx:883
 TOracleStatement.cxx:884
 TOracleStatement.cxx:885
 TOracleStatement.cxx:886
 TOracleStatement.cxx:887
 TOracleStatement.cxx:888
 TOracleStatement.cxx:889
 TOracleStatement.cxx:890
 TOracleStatement.cxx:891
 TOracleStatement.cxx:892
 TOracleStatement.cxx:893
 TOracleStatement.cxx:894
 TOracleStatement.cxx:895
 TOracleStatement.cxx:896
 TOracleStatement.cxx:897
 TOracleStatement.cxx:898
 TOracleStatement.cxx:899
 TOracleStatement.cxx:900
 TOracleStatement.cxx:901
 TOracleStatement.cxx:902
 TOracleStatement.cxx:903
 TOracleStatement.cxx:904
 TOracleStatement.cxx:905
 TOracleStatement.cxx:906
 TOracleStatement.cxx:907
 TOracleStatement.cxx:908
 TOracleStatement.cxx:909
 TOracleStatement.cxx:910
 TOracleStatement.cxx:911
 TOracleStatement.cxx:912
 TOracleStatement.cxx:913
 TOracleStatement.cxx:914
 TOracleStatement.cxx:915
 TOracleStatement.cxx:916
 TOracleStatement.cxx:917
 TOracleStatement.cxx:918
 TOracleStatement.cxx:919
 TOracleStatement.cxx:920
 TOracleStatement.cxx:921
 TOracleStatement.cxx:922
 TOracleStatement.cxx:923
 TOracleStatement.cxx:924
 TOracleStatement.cxx:925
 TOracleStatement.cxx:926
 TOracleStatement.cxx:927
 TOracleStatement.cxx:928
 TOracleStatement.cxx:929
 TOracleStatement.cxx:930
 TOracleStatement.cxx:931
 TOracleStatement.cxx:932
 TOracleStatement.cxx:933
 TOracleStatement.cxx:934
 TOracleStatement.cxx:935
 TOracleStatement.cxx:936
 TOracleStatement.cxx:937
 TOracleStatement.cxx:938
 TOracleStatement.cxx:939
 TOracleStatement.cxx:940
 TOracleStatement.cxx:941
 TOracleStatement.cxx:942
 TOracleStatement.cxx:943
 TOracleStatement.cxx:944
 TOracleStatement.cxx:945
 TOracleStatement.cxx:946
 TOracleStatement.cxx:947
 TOracleStatement.cxx:948
 TOracleStatement.cxx:949
 TOracleStatement.cxx:950
 TOracleStatement.cxx:951
 TOracleStatement.cxx:952
 TOracleStatement.cxx:953
 TOracleStatement.cxx:954
 TOracleStatement.cxx:955
 TOracleStatement.cxx:956
 TOracleStatement.cxx:957
 TOracleStatement.cxx:958
 TOracleStatement.cxx:959
 TOracleStatement.cxx:960
 TOracleStatement.cxx:961
 TOracleStatement.cxx:962
 TOracleStatement.cxx:963
 TOracleStatement.cxx:964
 TOracleStatement.cxx:965
 TOracleStatement.cxx:966
 TOracleStatement.cxx:967
 TOracleStatement.cxx:968
 TOracleStatement.cxx:969
 TOracleStatement.cxx:970
 TOracleStatement.cxx:971
 TOracleStatement.cxx:972
 TOracleStatement.cxx:973
 TOracleStatement.cxx:974
 TOracleStatement.cxx:975
 TOracleStatement.cxx:976
 TOracleStatement.cxx:977
 TOracleStatement.cxx:978
 TOracleStatement.cxx:979
 TOracleStatement.cxx:980
 TOracleStatement.cxx:981
 TOracleStatement.cxx:982
 TOracleStatement.cxx:983
 TOracleStatement.cxx:984
 TOracleStatement.cxx:985
 TOracleStatement.cxx:986
 TOracleStatement.cxx:987
 TOracleStatement.cxx:988
 TOracleStatement.cxx:989
 TOracleStatement.cxx:990
 TOracleStatement.cxx:991
 TOracleStatement.cxx:992
 TOracleStatement.cxx:993
 TOracleStatement.cxx:994
 TOracleStatement.cxx:995
 TOracleStatement.cxx:996
 TOracleStatement.cxx:997
 TOracleStatement.cxx:998
 TOracleStatement.cxx:999
 TOracleStatement.cxx:1000
 TOracleStatement.cxx:1001
 TOracleStatement.cxx:1002
 TOracleStatement.cxx:1003
 TOracleStatement.cxx:1004
 TOracleStatement.cxx:1005
 TOracleStatement.cxx:1006
 TOracleStatement.cxx:1007
 TOracleStatement.cxx:1008
 TOracleStatement.cxx:1009
 TOracleStatement.cxx:1010
 TOracleStatement.cxx:1011
 TOracleStatement.cxx:1012
 TOracleStatement.cxx:1013
 TOracleStatement.cxx:1014
 TOracleStatement.cxx:1015
 TOracleStatement.cxx:1016
 TOracleStatement.cxx:1017
 TOracleStatement.cxx:1018
 TOracleStatement.cxx:1019
 TOracleStatement.cxx:1020
 TOracleStatement.cxx:1021
 TOracleStatement.cxx:1022
 TOracleStatement.cxx:1023
 TOracleStatement.cxx:1024
 TOracleStatement.cxx:1025
 TOracleStatement.cxx:1026
 TOracleStatement.cxx:1027
 TOracleStatement.cxx:1028
 TOracleStatement.cxx:1029
 TOracleStatement.cxx:1030
 TOracleStatement.cxx:1031
 TOracleStatement.cxx:1032
 TOracleStatement.cxx:1033
 TOracleStatement.cxx:1034
 TOracleStatement.cxx:1035
 TOracleStatement.cxx:1036
 TOracleStatement.cxx:1037
 TOracleStatement.cxx:1038
 TOracleStatement.cxx:1039
 TOracleStatement.cxx:1040
 TOracleStatement.cxx:1041
 TOracleStatement.cxx:1042
 TOracleStatement.cxx:1043
 TOracleStatement.cxx:1044
 TOracleStatement.cxx:1045
 TOracleStatement.cxx:1046
 TOracleStatement.cxx:1047
 TOracleStatement.cxx:1048
 TOracleStatement.cxx:1049
 TOracleStatement.cxx:1050
 TOracleStatement.cxx:1051
 TOracleStatement.cxx:1052
 TOracleStatement.cxx:1053
 TOracleStatement.cxx:1054
 TOracleStatement.cxx:1055
 TOracleStatement.cxx:1056
 TOracleStatement.cxx:1057
 TOracleStatement.cxx:1058
 TOracleStatement.cxx:1059
 TOracleStatement.cxx:1060
 TOracleStatement.cxx:1061
 TOracleStatement.cxx:1062
 TOracleStatement.cxx:1063
 TOracleStatement.cxx:1064
 TOracleStatement.cxx:1065
 TOracleStatement.cxx:1066
 TOracleStatement.cxx:1067
 TOracleStatement.cxx:1068
 TOracleStatement.cxx:1069
 TOracleStatement.cxx:1070
 TOracleStatement.cxx:1071
 TOracleStatement.cxx:1072
 TOracleStatement.cxx:1073
 TOracleStatement.cxx:1074
 TOracleStatement.cxx:1075
 TOracleStatement.cxx:1076
 TOracleStatement.cxx:1077
 TOracleStatement.cxx:1078
 TOracleStatement.cxx:1079
 TOracleStatement.cxx:1080
 TOracleStatement.cxx:1081
 TOracleStatement.cxx:1082
 TOracleStatement.cxx:1083
 TOracleStatement.cxx:1084
 TOracleStatement.cxx:1085
 TOracleStatement.cxx:1086
 TOracleStatement.cxx:1087
 TOracleStatement.cxx:1088
 TOracleStatement.cxx:1089
 TOracleStatement.cxx:1090
 TOracleStatement.cxx:1091
 TOracleStatement.cxx:1092
 TOracleStatement.cxx:1093
 TOracleStatement.cxx:1094
 TOracleStatement.cxx:1095
 TOracleStatement.cxx:1096
 TOracleStatement.cxx:1097
 TOracleStatement.cxx:1098
 TOracleStatement.cxx:1099
 TOracleStatement.cxx:1100
 TOracleStatement.cxx:1101
 TOracleStatement.cxx:1102
 TOracleStatement.cxx:1103
 TOracleStatement.cxx:1104
 TOracleStatement.cxx:1105
 TOracleStatement.cxx:1106
 TOracleStatement.cxx:1107
 TOracleStatement.cxx:1108
 TOracleStatement.cxx:1109
 TOracleStatement.cxx:1110
 TOracleStatement.cxx:1111
 TOracleStatement.cxx:1112
 TOracleStatement.cxx:1113
 TOracleStatement.cxx:1114
 TOracleStatement.cxx:1115
 TOracleStatement.cxx:1116
 TOracleStatement.cxx:1117
 TOracleStatement.cxx:1118
 TOracleStatement.cxx:1119
 TOracleStatement.cxx:1120
 TOracleStatement.cxx:1121
 TOracleStatement.cxx:1122
 TOracleStatement.cxx:1123
 TOracleStatement.cxx:1124
 TOracleStatement.cxx:1125
 TOracleStatement.cxx:1126
 TOracleStatement.cxx:1127
 TOracleStatement.cxx:1128
 TOracleStatement.cxx:1129
 TOracleStatement.cxx:1130
 TOracleStatement.cxx:1131
 TOracleStatement.cxx:1132
 TOracleStatement.cxx:1133
 TOracleStatement.cxx:1134
 TOracleStatement.cxx:1135
 TOracleStatement.cxx:1136
 TOracleStatement.cxx:1137
 TOracleStatement.cxx:1138
 TOracleStatement.cxx:1139
 TOracleStatement.cxx:1140
 TOracleStatement.cxx:1141
 TOracleStatement.cxx:1142
 TOracleStatement.cxx:1143
 TOracleStatement.cxx:1144
 TOracleStatement.cxx:1145
 TOracleStatement.cxx:1146
 TOracleStatement.cxx:1147
 TOracleStatement.cxx:1148
 TOracleStatement.cxx:1149
 TOracleStatement.cxx:1150
 TOracleStatement.cxx:1151
 TOracleStatement.cxx:1152
 TOracleStatement.cxx:1153
 TOracleStatement.cxx:1154
 TOracleStatement.cxx:1155
 TOracleStatement.cxx:1156
 TOracleStatement.cxx:1157
 TOracleStatement.cxx:1158
 TOracleStatement.cxx:1159
 TOracleStatement.cxx:1160
 TOracleStatement.cxx:1161
 TOracleStatement.cxx:1162
 TOracleStatement.cxx:1163
 TOracleStatement.cxx:1164
 TOracleStatement.cxx:1165
 TOracleStatement.cxx:1166
 TOracleStatement.cxx:1167
 TOracleStatement.cxx:1168
 TOracleStatement.cxx:1169
 TOracleStatement.cxx:1170
 TOracleStatement.cxx:1171
 TOracleStatement.cxx:1172
 TOracleStatement.cxx:1173
 TOracleStatement.cxx:1174
 TOracleStatement.cxx:1175
 TOracleStatement.cxx:1176
 TOracleStatement.cxx:1177
 TOracleStatement.cxx:1178
 TOracleStatement.cxx:1179
 TOracleStatement.cxx:1180
 TOracleStatement.cxx:1181
 TOracleStatement.cxx:1182
 TOracleStatement.cxx:1183
 TOracleStatement.cxx:1184
 TOracleStatement.cxx:1185
 TOracleStatement.cxx:1186
 TOracleStatement.cxx:1187
 TOracleStatement.cxx:1188
 TOracleStatement.cxx:1189
 TOracleStatement.cxx:1190
 TOracleStatement.cxx:1191
 TOracleStatement.cxx:1192
 TOracleStatement.cxx:1193
 TOracleStatement.cxx:1194
 TOracleStatement.cxx:1195
 TOracleStatement.cxx:1196
 TOracleStatement.cxx:1197
 TOracleStatement.cxx:1198
 TOracleStatement.cxx:1199
 TOracleStatement.cxx:1200
 TOracleStatement.cxx:1201
 TOracleStatement.cxx:1202
 TOracleStatement.cxx:1203
 TOracleStatement.cxx:1204
 TOracleStatement.cxx:1205
 TOracleStatement.cxx:1206
 TOracleStatement.cxx:1207
 TOracleStatement.cxx:1208
 TOracleStatement.cxx:1209
 TOracleStatement.cxx:1210
 TOracleStatement.cxx:1211
 TOracleStatement.cxx:1212
 TOracleStatement.cxx:1213
 TOracleStatement.cxx:1214
 TOracleStatement.cxx:1215
 TOracleStatement.cxx:1216
 TOracleStatement.cxx:1217
 TOracleStatement.cxx:1218
 TOracleStatement.cxx:1219
 TOracleStatement.cxx:1220
 TOracleStatement.cxx:1221
 TOracleStatement.cxx:1222
 TOracleStatement.cxx:1223
 TOracleStatement.cxx:1224
 TOracleStatement.cxx:1225
 TOracleStatement.cxx:1226
 TOracleStatement.cxx:1227
 TOracleStatement.cxx:1228
 TOracleStatement.cxx:1229