#ifndef ORACLE7_H #define ORACLE7_H #include #include "OraCommon.h" #include "OciCommon.h" namespace Upp { #define DLLFILENAME "ociw32.dll" #define DLIMODULE OCI7 #define DLIHEADER #include class OCI7Connection; void OCI7SetDllPath(String oci7_path, T_OCI7& oci7 = OCI7_()); class Oracle7 : public SqlSession { public: virtual void Begin(); virtual void Commit(); virtual void Rollback(); virtual String Savepoint(); virtual void RollbackTo(const String& savepoint); virtual bool IsOpen() const; virtual RunScript GetRunScript() const { return &OraclePerformScript; } virtual Vector EnumUsers(); virtual Vector EnumDatabases(); virtual Vector EnumTables(String database); virtual Vector EnumViews(String database); virtual Vector EnumSequences(String database); virtual Vector EnumPrimaryKey(String database, String table); virtual String EnumRowID(String database, String table); virtual Vector EnumReservedWords(); public: T_OCI7& oci7; protected: virtual SqlConnection *CreateConnection(); protected: friend class OCI7Connection; Link<> clink; bool connected; byte lda[256]; byte hda[512]; String user; int level; bool autocommit; int tmode; String Spn(); void SetSp(); String GetErrorMsg(int code) const; void PreExec(); void PostExec(); public: bool Open(const String& s); void Close(); enum TransactionMode { NORMAL, // autocommit at level 0, no Commit or Rollback allowed at level 0 ORACLE // Oracle-style Commit and Rollback at level 0 }; void SetTransactionMode(int mode) { tmode = mode; } Oracle7(T_OCI7& oci7 = OCI7_()); ~Oracle7(); }; typedef Oracle7 OracleSession; } #endif