ROOT logo
// @(#)root/physics:$Id: TOracleResult.h 23102 2008-04-09 22:18:41Z pcanal $
// Author: Yan Liu and Shaowen Wang   23/11/04

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

#ifndef ROOT_TOracleResult
#define ROOT_TOracleResult

#ifndef ROOT_TSQLResult
#include "TSQLResult.h"
#endif

#include <vector>

#if !defined(__CINT__)
#ifndef R__WIN32
#include <sys/time.h>
#endif
#include <occi.h>
using namespace oracle::occi;
#ifdef CONST
#undef CONST
#endif
#else
class Connection;
class Statement;
class ResultSet;
class MetaData;
#endif

class TList;

class TOracleResult : public TSQLResult {

private:
   Connection            *fConn;        // connection to Oracle 
   Statement             *fStmt;        // executed statement
   ResultSet             *fResult;      // query result (rows)
   std::vector<MetaData> *fFieldInfo;   // info for each field in the row
   Int_t                  fFieldCount;  // num of fields in resultset
   UInt_t                 fUpdateCount; // for dml query, mutual exclusive with above
   Int_t                  fResultType;  // 0 - nothing; 1 - Select; 2 - table metainfo, 3 - update counter
   TList                 *fPool;        // array of results, produced when number of rows are requested 
   std::string           fNameBuffer; // buffer for GetFieldName() argument

   Bool_t  IsValid(Int_t field);

protected:
   void    initResultSet(Statement *stmt);
   void    ProducePool();

public:
   TOracleResult(Connection *conn, Statement *stmt);
   TOracleResult(Connection *conn, const char *tableName);
   ~TOracleResult();

   void        Close(Option_t *opt="");
   Int_t       GetFieldCount();
   const char *GetFieldName(Int_t field);
   virtual Int_t GetRowCount() const;
   TSQLRow    *Next();
   
   Int_t       GetUpdateCount() { return fUpdateCount; }

   ClassDef(TOracleResult,0)  // Oracle query result
};

#endif
 TOracleResult.h:1
 TOracleResult.h:2
 TOracleResult.h:3
 TOracleResult.h:4
 TOracleResult.h:5
 TOracleResult.h:6
 TOracleResult.h:7
 TOracleResult.h:8
 TOracleResult.h:9
 TOracleResult.h:10
 TOracleResult.h:11
 TOracleResult.h:12
 TOracleResult.h:13
 TOracleResult.h:14
 TOracleResult.h:15
 TOracleResult.h:16
 TOracleResult.h:17
 TOracleResult.h:18
 TOracleResult.h:19
 TOracleResult.h:20
 TOracleResult.h:21
 TOracleResult.h:22
 TOracleResult.h:23
 TOracleResult.h:24
 TOracleResult.h:25
 TOracleResult.h:26
 TOracleResult.h:27
 TOracleResult.h:28
 TOracleResult.h:29
 TOracleResult.h:30
 TOracleResult.h:31
 TOracleResult.h:32
 TOracleResult.h:33
 TOracleResult.h:34
 TOracleResult.h:35
 TOracleResult.h:36
 TOracleResult.h:37
 TOracleResult.h:38
 TOracleResult.h:39
 TOracleResult.h:40
 TOracleResult.h:41
 TOracleResult.h:42
 TOracleResult.h:43
 TOracleResult.h:44
 TOracleResult.h:45
 TOracleResult.h:46
 TOracleResult.h:47
 TOracleResult.h:48
 TOracleResult.h:49
 TOracleResult.h:50
 TOracleResult.h:51
 TOracleResult.h:52
 TOracleResult.h:53
 TOracleResult.h:54
 TOracleResult.h:55
 TOracleResult.h:56
 TOracleResult.h:57
 TOracleResult.h:58
 TOracleResult.h:59
 TOracleResult.h:60
 TOracleResult.h:61
 TOracleResult.h:62
 TOracleResult.h:63
 TOracleResult.h:64
 TOracleResult.h:65
 TOracleResult.h:66
 TOracleResult.h:67
 TOracleResult.h:68
 TOracleResult.h:69
 TOracleResult.h:70
 TOracleResult.h:71
 TOracleResult.h:72
 TOracleResult.h:73
 TOracleResult.h:74