mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-07-31 01:15:48 -04:00
Added sharedDatabaseInterface and oci implementation libraries
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
// ======================================================================
|
||||
//
|
||||
// OCIQueryImpl.h
|
||||
// copyright (c) 2001 Sony Online Entertainment
|
||||
//
|
||||
// ======================================================================
|
||||
|
||||
#ifndef INCLUDED_OCIQueryImpl_H
|
||||
#define INCLUDED_OCIQueryImpl_H
|
||||
|
||||
// ======================================================================
|
||||
|
||||
#include "sharedDatabaseInterface/DbQueryImplementation.h"
|
||||
#include <list>
|
||||
#include <string>
|
||||
|
||||
// ======================================================================
|
||||
|
||||
namespace DB
|
||||
{
|
||||
class BindableVarray;
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
struct OCIStmt;
|
||||
struct OCIDefine;
|
||||
struct OCIBind;
|
||||
|
||||
namespace DB
|
||||
{
|
||||
class Bindable;
|
||||
class OCISession;
|
||||
class OCIServer;
|
||||
|
||||
class OCIQueryImpl : public QueryImpl
|
||||
{
|
||||
public:
|
||||
OCIQueryImpl(Query *query, bool autocommit);
|
||||
virtual ~OCIQueryImpl();
|
||||
|
||||
virtual bool setup(Session *session);
|
||||
virtual bool prepare();
|
||||
virtual int fetch();
|
||||
virtual void done();
|
||||
virtual int rowCount();
|
||||
virtual bool exec();
|
||||
|
||||
virtual Protocol getProtocol() const;
|
||||
|
||||
virtual void setColArrayMode(size_t skipSize, size_t numElements);
|
||||
|
||||
virtual bool bindCol(BindableLong &buffer);
|
||||
virtual bool bindParameter(BindableLong &buffer);
|
||||
virtual bool bindCol(BindableDouble &buffer);
|
||||
virtual bool bindParameter(BindableDouble &buffer);
|
||||
virtual bool bindCol(BindableStringBase &buffer);
|
||||
virtual bool bindParameter(BindableStringBase &buffer);
|
||||
virtual bool bindCol(BindableUnicodeBase &buffer);
|
||||
virtual bool bindParameter(BindableUnicodeBase &buffer);
|
||||
virtual bool bindCol(BindableBool &buffer);
|
||||
virtual bool bindParameter(BindableBool &buffer);
|
||||
virtual bool bindParameter(BindableVarray &buffer);
|
||||
|
||||
std::string outputDataValues() const;
|
||||
|
||||
protected:
|
||||
struct BindRec
|
||||
{
|
||||
BindRec(size_t numElements);
|
||||
~BindRec();
|
||||
|
||||
int16 * getIndicatorPointer();
|
||||
uint16 * getLengthPointer();
|
||||
|
||||
size_t getIndicatorSkipSize();
|
||||
size_t getLengthSkipSize();
|
||||
|
||||
Bindable *owner;
|
||||
OCIDefine *defnp;
|
||||
OCIBind *bindp;
|
||||
int16 indicator;
|
||||
uint16 length;
|
||||
bool stringAdjust;
|
||||
size_t m_numElements;
|
||||
int16 *m_indicatorArray;
|
||||
uint16 *m_lengthArray;
|
||||
};
|
||||
|
||||
typedef std::list<BindRec*> BindRecListType;
|
||||
|
||||
protected:
|
||||
|
||||
BindRec *addBindRec(Bindable &owner);
|
||||
void preprocessBinds();
|
||||
void postProcessResults();
|
||||
|
||||
protected:
|
||||
/** The OCIStmt handle representing the query.
|
||||
*/
|
||||
::OCIStmt *m_stmthp;
|
||||
/** The handle representing the cursor containing the results of the query. Usually,
|
||||
* this is set to the same as stmthp.
|
||||
*/
|
||||
::OCIStmt *m_cursorhp;
|
||||
::OCIBind *m_procBind;
|
||||
|
||||
DB::OCISession *m_session;
|
||||
DB::OCIServer *m_server;
|
||||
|
||||
bool m_inUse;
|
||||
int numRowsFetched;
|
||||
int nextColumn;
|
||||
int nextParameter;
|
||||
bool m_endOfData;
|
||||
bool m_dataReady;
|
||||
BindRecListType bindRecList;
|
||||
bool m_autocommit;
|
||||
size_t m_skipSize;
|
||||
size_t m_numElements;
|
||||
|
||||
std::string m_sql;
|
||||
|
||||
private:
|
||||
OCIQueryImpl(const OCIQueryImpl&);
|
||||
OCIQueryImpl & operator = (const OCIQueryImpl &);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user