1 #ifndef ORACLE7_H 2 #define ORACLE7_H 3 4 #include <Sql/Sql.h> 5 #include "OraCommon.h" 6 #include "OciCommon.h" 7 8 namespace Upp { 9 10 #define DLLFILENAME "ociw32.dll" 11 #define DLIMODULE OCI7 12 #define DLIHEADER <Oracle/Oci7.dli> 13 #include <Core/dli_header.h> 14 15 class OCI7Connection; 16 17 void OCI7SetDllPath(String oci7_path, T_OCI7& oci7 = OCI7_()); 18 19 class Oracle7 : public SqlSession { 20 public: 21 virtual void Begin(); 22 virtual void Commit(); 23 virtual void Rollback(); 24 25 virtual String Savepoint(); 26 virtual void RollbackTo(const String& savepoint); 27 28 virtual bool IsOpen() const; 29 GetRunScript()30 virtual RunScript GetRunScript() const { return &OraclePerformScript; } 31 32 virtual Vector<String> EnumUsers(); 33 virtual Vector<String> EnumDatabases(); 34 virtual Vector<String> EnumTables(String database); 35 virtual Vector<String> EnumViews(String database); 36 virtual Vector<String> EnumSequences(String database); 37 virtual Vector<String> EnumPrimaryKey(String database, String table); 38 virtual String EnumRowID(String database, String table); 39 virtual Vector<String> EnumReservedWords(); 40 41 public: 42 T_OCI7& oci7; 43 44 protected: 45 virtual SqlConnection *CreateConnection(); 46 47 protected: 48 friend class OCI7Connection; 49 50 Link<OCI7Connection> clink; 51 bool connected; 52 byte lda[256]; 53 byte hda[512]; 54 String user; 55 int level; 56 bool autocommit; 57 int tmode; 58 59 String Spn(); 60 void SetSp(); 61 String GetErrorMsg(int code) const; 62 void PreExec(); 63 void PostExec(); 64 65 public: 66 bool Open(const String& s); 67 void Close(); 68 69 enum TransactionMode { 70 NORMAL, // autocommit at level 0, no Commit or Rollback allowed at level 0 71 ORACLE // Oracle-style Commit and Rollback at level 0 72 }; 73 SetTransactionMode(int mode)74 void SetTransactionMode(int mode) { tmode = mode; } 75 76 Oracle7(T_OCI7& oci7 = OCI7_()); 77 ~Oracle7(); 78 }; 79 80 typedef Oracle7 OracleSession; 81 82 } 83 84 #endif 85