OCILIB (C and C++ Driver for Oracle)  4.7.5
Open source and cross platform Oracle Driver delivering efficient access to Oracle databases.
Loading...
Searching...
No Matches
ocilib::Collection< T > Class Template Reference

Object identifying the SQL data types VARRAY and NESTED TABLE. More...

#include <types.hpp>

Inherits ocilib::core::HandleHolder< OCI_Coll * >, and ocilib::core::Streamable.

Public Types

enum  CollectionTypeValues { Varray = OCI_COLL_VARRAY , NestedTable = OCI_COLL_NESTED_TABLE , IndexedTable = OCI_COLL_INDEXED_TABLE }
 Collection type enumerated values. More...
 
typedef core::Enum< CollectionTypeValuesCollectionType
 Collection type.
 
typedef CollectionIterator< CollectionElement< T > > iterator
 Common iterator declaration.
 
typedef CollectionIterator< const CollectionElement< T > > const_iterator
 Common const iterator declaration.
 

Public Member Functions

 Collection ()
 Create an empty null Collection instance.
 
 Collection (const TypeInfo &typeInfo)
 Parametrized constructor.
 
CollectionType GetType () const
 Return the type of the collection.
 
unsigned int GetMax () const
 Returns the maximum number of elements for the collection.
 
unsigned int GetSize () const
 Returns the total number of elements in the collection.
 
unsigned int GetCount () const
 Returns the current number of elements in the collection.
 
void Truncate (unsigned int size)
 Trim the given number of elements from the end of the collection.
 
void Clear ()
 Clear all items of the collection.
 
bool IsElementNull (unsigned int index) const
 check if the element at the given index is null
 
void SetElementNull (unsigned int index)
 Nullify the element at the given index.
 
bool Delete (unsigned int index) const
 Delete the element at the given position in the Nested Table Collection.
 
Get (unsigned int index) const
 Return the collection element value at the given position.
 
void Set (unsigned int index, const T &value)
 Set the collection element value at the given position.
 
void Append (const T &value)
 Append the given element value at the end of the collection.
 
TypeInfo GetTypeInfo () const
 Return the type information object associated to the collection.
 
Collection Clone () const
 Clone the current instance to a new one performing deep copy.
 
ostring ToString () const override
 return a string representation of the current collection
 
iterator begin ()
 Returns an iterator pointing to the first element in the collection.
 
const_iterator begin () const
 Returns a const iterator pointing to the first element in the collection.
 
iterator end ()
 Returns an iterator referring to the past-the-end element in the collection.
 
const_iterator end () const
 Returns a const iterator referring to the past-the-end element in the collection.
 
CollectionElement< T > operator[] (unsigned int index)
 Returns the element at a given position in the collection.
 
CollectionElement< T > operator[] (unsigned int index) const
 Returns the element at a given position in the collection.
 

Detailed Description

template<class T>
class ocilib::Collection< T >

Object identifying the SQL data types VARRAY and NESTED TABLE.

This class wraps the OCILIB object handle OCI_Coll and its related methods

Definition at line 5025 of file types.hpp.

Member Typedef Documentation

◆ CollectionType

template<class T >
typedef core::Enum<CollectionTypeValues> ocilib::Collection< T >::CollectionType

Collection type.

Possible values are Collection::CollectionTypeValues

Definition at line 5060 of file types.hpp.

◆ iterator

template<class T >
typedef CollectionIterator<CollectionElement<T> > ocilib::Collection< T >::iterator

Common iterator declaration.

Definition at line 5226 of file types.hpp.

◆ const_iterator

template<class T >
typedef CollectionIterator<const CollectionElement<T> > ocilib::Collection< T >::const_iterator

Common const iterator declaration.

Definition at line 5233 of file types.hpp.

Member Enumeration Documentation

◆ CollectionTypeValues

Collection type enumerated values.

Enumerator
Varray 

Collection is a VARRAY

NestedTable 

Collection is a NESTED TABLE

IndexedTable 

Collection is a PL/SQL TABLE INDEX BY

Definition at line 5043 of file types.hpp.

Constructor & Destructor Documentation

◆ Collection() [1/2]

template<class T >
ocilib::Collection< T >::Collection

Create an empty null Collection instance.

Definition at line 31 of file Collection.hpp.

◆ Collection() [2/2]

template<class T >
ocilib::Collection< T >::Collection ( const TypeInfo typeInfo)

Parametrized constructor.

Parameters
typeInfo- type info descriptor

Definition at line 36 of file Collection.hpp.

References ocilib::core::Check(), ocilib::TypeInfo::GetConnection(), and OCI_CollCreate().

Member Function Documentation

◆ GetType()

template<class T >
Collection< T >::CollectionType ocilib::Collection< T >::GetType

Return the type of the collection.

Definition at line 68 of file Collection.hpp.

References ocilib::core::Check(), and OCI_CollGetType().

◆ GetMax()

template<class T >
unsigned int ocilib::Collection< T >::GetMax

Returns the maximum number of elements for the collection.

Definition at line 74 of file Collection.hpp.

References ocilib::core::Check(), and OCI_CollGetMax().

◆ GetSize()

template<class T >
unsigned int ocilib::Collection< T >::GetSize

Returns the total number of elements in the collection.

Definition at line 80 of file Collection.hpp.

References ocilib::core::Check(), and OCI_CollGetSize().

◆ GetCount()

template<class T >
unsigned int ocilib::Collection< T >::GetCount

Returns the current number of elements in the collection.

Note
  • For VARRAYs, it returns the same value than GetSize() as VARRAYs cannot contains holes
  • For Nested Tables that are spare collections that can have holes, it returns the total number of elements minus the total of deleted elements

Definition at line 87 of file Collection.hpp.

References ocilib::core::Check(), and OCI_CollGetCount().

◆ Truncate()

template<class T >
void ocilib::Collection< T >::Truncate ( unsigned int  size)

Trim the given number of elements from the end of the collection.

Parameters
size- Number of elements to trim

Definition at line 94 of file Collection.hpp.

References ocilib::core::Check(), and OCI_CollTrim().

◆ Clear()

template<class T >
void ocilib::Collection< T >::Clear

Clear all items of the collection.

Definition at line 100 of file Collection.hpp.

References ocilib::core::Check(), and OCI_CollClear().

◆ IsElementNull()

template<class T >
bool ocilib::Collection< T >::IsElementNull ( unsigned int  index) const

check if the element at the given index is null

Parameters
index- Index of the element
Note
Collection Index start at 1

Definition at line 106 of file Collection.hpp.

References ocilib::core::Check(), OCI_CollGetElem(), and OCI_ElemIsNull().

◆ SetElementNull()

template<class T >
void ocilib::Collection< T >::SetElementNull ( unsigned int  index)

Nullify the element at the given index.

Parameters
index- Index of the element
Note
Collection Index start at 1

Definition at line 112 of file Collection.hpp.

References ocilib::core::Check(), OCI_CollGetElem(), and OCI_ElemSetNull().

◆ Delete()

template<class T >
bool ocilib::Collection< T >::Delete ( unsigned int  index) const

Delete the element at the given position in the Nested Table Collection.

Parameters
index- Index of the element to delete
Note
Collection indexes start at position 1.
Warning
Delete() is only valid for nested tables (e.g. when collection type is Collection::NestedTable
Returns
  • if the input collection is a nested table, it returns true if the element is successfully deleted
  • if the input collection is a VARRAY, it always returns false

Definition at line 118 of file Collection.hpp.

References ocilib::core::Check(), and OCI_CollDeleteElem().

◆ Get()

template<class T >
T ocilib::Collection< T >::Get ( unsigned int  index) const

Return the collection element value at the given position.

Parameters
index- Index of the element

Definition at line 148 of file Collection.hpp.

References ocilib::core::Check(), and OCI_CollGetElem().

◆ Set()

template<class T >
void ocilib::Collection< T >::Set ( unsigned int  index,
const T &  value 
)

Set the collection element value at the given position.

Parameters
index- Index of the element
value- Value to set

Definition at line 154 of file Collection.hpp.

References ocilib::core::Check(), OCI_CollGetElem(), and OCI_CollSetElem().

◆ Append()

template<class T >
void ocilib::Collection< T >::Append ( const T &  value)

Append the given element value at the end of the collection.

Parameters
value- Value to add

Definition at line 164 of file Collection.hpp.

References ocilib::core::Check(), OCI_CollAppend(), OCI_CollGetTypeInfo(), OCI_ElemCreate(), and OCI_ElemFree().

◆ GetTypeInfo()

template<class T >
TypeInfo ocilib::Collection< T >::GetTypeInfo

Return the type information object associated to the collection.

Definition at line 62 of file Collection.hpp.

References ocilib::core::Check(), and OCI_CollGetTypeInfo().

◆ Clone()

template<class T >
Collection< T > ocilib::Collection< T >::Clone

Clone the current instance to a new one performing deep copy.

Definition at line 52 of file Collection.hpp.

References ocilib::core::Check(), and OCI_CollAssign().

◆ ToString()

template<class T >
ostring ocilib::Collection< T >::ToString
overridevirtual

return a string representation of the current collection

Implements ocilib::core::Streamable.

Definition at line 468 of file Collection.hpp.

References ocilib::core::Check(), ocilib::core::MakeString(), and OCI_CollToText().

◆ begin() [1/2]

template<class T >
Collection< T >::iterator ocilib::Collection< T >::begin

Returns an iterator pointing to the first element in the collection.

Definition at line 124 of file Collection.hpp.

◆ begin() [2/2]

template<class T >
Collection< T >::const_iterator ocilib::Collection< T >::begin

Returns a const iterator pointing to the first element in the collection.

Definition at line 130 of file Collection.hpp.

◆ end() [1/2]

template<class T >
Collection< T >::iterator ocilib::Collection< T >::end

Returns an iterator referring to the past-the-end element in the collection.

Definition at line 136 of file Collection.hpp.

◆ end() [2/2]

template<class T >
Collection< T >::const_iterator ocilib::Collection< T >::end

Returns a const iterator referring to the past-the-end element in the collection.

Definition at line 142 of file Collection.hpp.

◆ operator[]() [1/2]

template<class T >
CollectionElement< T > ocilib::Collection< T >::operator[] ( unsigned int  index)

Returns the element at a given position in the collection.

Definition at line 487 of file Collection.hpp.

◆ operator[]() [2/2]

template<class T >
CollectionElement< T > ocilib::Collection< T >::operator[] ( unsigned int  index) const

Returns the element at a given position in the collection.

Definition at line 493 of file Collection.hpp.