00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef RESOURCEPOOL_ORACLE_COMMANDCOMMON_HH
00025 #define RESOURCEPOOL_ORACLE_COMMANDCOMMON_HH
00026
00027 #ifndef RESOURCEPOOL_ORACLE_COMMANDINTERFACE_HH
00028 #include "CommandInterface.hh"
00029 #endif
00030
00031 #ifndef INCLUDED_GC_PTR_HH
00032 #include "mm/gc_ptr.hh"
00033 #endif
00034
00035 #ifndef RESOURCEPOOL_COMMAND_HH
00036 #include "ResourcePool/Command.hh"
00037 #endif
00038
00039 #ifndef RESOURCEPOOL_ORACLE_OCIHANDLEFWD_HH
00040 #include "OCIHandleFwd.hh"
00041 #endif
00042
00043 #ifndef RESOURCEPOOL_SQL_BIND_HH
00044 #include "ResourcePool/SQL/Bind.hh"
00045 #endif
00046
00047 #ifndef RESOURCEPOOL_ORACLE_STATEMENTCACHE_HH
00048 #include "StatementCache.hh"
00049 #endif
00050
00051 #ifndef RESOURCEPOOL_ORACLE_ORACLESTATEMENT_HH
00052 #include "oracleStatement.hh"
00053 #endif
00054
00055 #include "ResourcePool/SQL/SQLStatement.hh"
00056
00057 #include <string>
00058
00059 namespace fatalmind {
00060 namespace oracle {
00061
00062 class oracleType;
00063 template<typename T>
00064 class oracleTypeImpl;
00065
00069 template<class TM, template<class> class SLMDC>
00070 class CommandCommon
00071 : public CommandInterface<TM, SLMDC>
00072 , public SQL::Bind<oracleType, oracleTypeImpl>
00073 {
00074 public:
00075 virtual ~CommandCommon();
00076
00077 virtual void outputoperator(std::ostream& s) const;
00078 protected:
00079 typedef SQL::Bind<oracleType, oracleTypeImpl> super_bind;
00084 CommandCommon(const fatalmind::SQL::SQLStatement&);
00085
00086
00087
00088
00089
00090 virtual void _execute(oracleResource<TM>&, StatementCache&) = 0;
00091
00092
00093
00094
00095 StatementCache::handle_t prepare(oracleResource<TM>&, StatementCache&, const oracleStatement& oraSQL);
00096
00097
00098
00099
00100 void real_bind(oracleResource<TM>&, OCIStatementHandle& sth);
00101
00102 const std::string& getSQL() const;
00103
00104 virtual const std::string& getCommandName() const;
00105 static const std::string _CommandCommonName;
00106
00110 oracleStatement _SQL;
00111 };
00112
00113 }
00114 }
00115 #endif