fatalmind::oracle::SQLSelect< TM, SLMDC > Class Template Reference

#include <SQLSelect.hh>

Inherits fatalmind::oracle::SQLSelectRow< TM, SLMDC >< TM, SLMDC >.

List of all members.


Detailed Description

template<class TM, template< class > class SLMDC>
class fatalmind::oracle::SQLSelect< TM, SLMDC >

Issue an select statement which returns an arbitary number of rows.

Public Types

typedef
fatalmind::oracle::ResourceType
< TM, SLMDC > 
pool_type

Public Member Functions

 SQLSelect (const std::string &SQL, SQL::SQLFetcher &fetcher)
 SQLSelect (const ResourcePool< ResourceType< TM > > &p, const std::string &SQL, SQL::SQLFetcher &fetcher)
 SQLSelect (const SQLSelect &)
virtual void outputoperator (std::ostream &s) const
virtual void execute (oracleResource< TM > &hand)
virtual void execute (typename fatalmind::oracle::ResourceType< TM, SLMDC >::resource_t &rr)=0
 The execute method is the one which actually carries out the work.
Clone * clone () const
template<class Derived>
Derived * clone () const
template<typename T>
void bind (const unsigned int pos, const T &val, bool nul=false)
 Binds an actual input value for an placeholder in the SQL statement.
virtual void clearParameters ()
virtual void bindoutputoperator (std::ostream &str) const
template<typename T>
void bindout (const unsigned int pos, T &val, bool &isnull)
 Specify where the output data of an select statement are to be stored.
template<typename T>
void bindout (const unsigned int pos, T &val, BindOutNotNullConstraint=NOTNULL)

Static Public Attributes

static bool notnullconstant
static BindOutNotNullConstraint NOTNULL

Protected Types

typedef SQL::Bind< oracleType,
oracleTypeImpl > 
super_bind
typedef std::vector< gc_ptr
< VBC > > 
_argst
typedef gc_ptr< VBC > _refT
typedef std::vector< _refT_outparamt

Protected Member Functions

virtual Clone * DoClone () const
void _execute (oracleResource< TM > &, StatementCache &)
virtual const std::string & getCommandName () const
void postSelectBuffer (oracleHandlesWithCache< TM > &)
bool preSelectBuffer (oracleHandlesWithCache< TM > &)
void preSelectBufferBind (oracleHandles &)
bool prepare_buffer (oracleHandlesWithCache< TM > &hand, StatementCache &sthcache)
void prepare (oracleHandles &, StatementCache &, const oracleStatement &oraSQL)
void real_bind (oracleHandles &)
const std::string & getSQL () const
const
fatalmind::oracle::ResourceType
< TM, SLMDC >::factory_t & 
getFactory (const ResourcePool< fatalmind::oracle::ResourceType< TM, SLMDC > > &p) const
void _done ()
void _start ()
void real_bindout (oracleHandles &, const OCIStatementHandle &, const std::string &)
bool fetch (oracleHandles &, const OCIStatementHandle &, const std::string &)
bool _fetch (oracleHandles &, const OCIStatementHandle &, const std::string &)
void finish (oracleHandles &, const OCIStatementHandle &, const std::string &)
void validateBindOut (const std::string &SQL) const
VBC & getOutParam (const unsigned int pos)
void setIterators ()

Protected Attributes

std::string _SQL
 this is a copy of the original SQL statement.
StatementCache::handle_t _sth
 since the statementhandle is cached we need some protection
_argst _args
gc_ptr< SelectListMetaData > _slmd
gc_ptr< SelectListBuffer > _slb
_outparamt _outparam
_outparamt::const_iterator _begin
_outparamt::const_iterator _end
SQL::SQLFetcherfetcher

Static Protected Attributes

static const std::string _SQLSelectName
static const std::string _SQLSelectRowName
static const std::string _CommandCommonName

Friends

class Transaction< TM, SLMDC >
class SelectListBuffer
class internal::registerFinish

Member Function Documentation

virtual void fatalmind::Command< fatalmind::oracle::ResourceType< TM, SLMDC > >::execute ( typename fatalmind::oracle::ResourceType< TM, SLMDC > ::resource_t &  rr  )  [pure virtual, inherited]

The execute method is the one which actually carries out the work.

This method gets called by ResourcePool with a (valid) plain resource which was obtained from the pool.

On normal execution (no exception) the resource will be free()ed, on abnormal execution (exception) the resource will be failed. If you need to throw an functional exception which should not cause failing of the resource, derive this exception from NoFailoverException.

template<class VBC, template< class > class CT>
template<typename T>
void fatalmind::SQL::Bind< VBC, CT >::bind ( const unsigned int  pos,
const T &  val,
bool  nul = false 
) [inline, inherited]

Binds an actual input value for an placeholder in the SQL statement.

All binding is done by value! this means the passed data are copied to internal storage. Chaning your original copy of your data after passing it to bind() is therefore safe.

Parameters:
pos The position indicator. The number of placeholder (?) in the SQL string. Counted from the left starting at 0.
val the actual value.
nul NULL inidcator, if set to yes the actual value to be bound will be NULL. Please note that you still need to provide a valid value!

Reimplemented from fatalmind::SQL::BindInterface.

template<class VBC, template< class > class CT>
template<typename T>
void fatalmind::SQL::BindOut< VBC, CT >::bindout ( const unsigned int  pos,
T &  val,
bool &  isnull 
) [inline, inherited]

Specify where the output data of an select statement are to be stored.

You need to specify an place where the columns for an select statement are to be stored. After each fetch those variables will be propagated with the actual values received from the select statement. You can also specify a bool which will be used as indicator if the fatched column is NULL. If you omit this third, optional parameter an Exception will be thrown in case a fetched column is NULL.

Parameters:
pos The column number to be bound. Numbering starts with the leftmost column at 0.
val The variable which should contain the value of this column after the fetch. Each time a row is retrieved the according column value value will be available in that variable. The content of the variable will not be changed in case the column is NULL or the execution failed because of an exception. Exclusive access is expected, so there are no synchronization effords taken by the select commands. The variable must be availalbe throughout the whole time of execution.
isnull The optional third argument specifies a bool variable which will be set to true if the fetched column is NULL or to false otherwise. You must supply this indicator variable if you might retrieve NULL for this column. Not supplying an indicator varaible will cause an
Indicator variable required but not supplied.
exception.

Reimplemented from fatalmind::SQL::BindOutInterface.


Member Data Documentation

template<class TM, template< class > class SLMDC>
std::string fatalmind::oracle::CommandCommon< TM, SLMDC >::_SQL [protected, inherited]

this is a copy of the original SQL statement.

since oracle doesn't support '?' placeholders we will do the parsing our selves. so this is actually not the SQL sent to oracle


The documentation for this class was generated from the following files:

Generated on Mon Jun 9 11:27:04 2008 for ResourcePool by  doxygen 1.5.5