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