Oracle C++ Call Interface Programmer's Guide Release 2 (9.2) Part Number A96583-01 |
|
OCCI Classes and Methods, 16 of 22
The mapping in the C++ programming language of an SQL REF value, which is a reference to an SQL structured type value in the database.
Each REF value has a unique identifier of the object it refers to. An SQL REF value may be used in place of the SQL structured type it references; it may be used as either a column value in a table or an attribute value in a structured type.
Because an SQL REF value is a logical pointer to an SQL structured type, a Ref object is by default also a logical pointer; thus, retrieving an SQL REF value as a Ref object does not materialize the attributes of the structured type on the client.
A Ref object can be saved to persistent storage and is de-referenced through operator*
or operator->
or ptr()
methods. T must be a class derived from PObject
. In the following sections, T* and PObject
* are used interchangeably.
To create a null Ref
object, use the syntax:
Ref();
The only methods valid on a null Ref
object are isNull
, and operator=()
.
To create a copy of a Ref
object, use the syntax:
Ref(const Ref<T> &src);
This method clears the Ref
object.
void clear();
This method returns the connection from which the Ref
object was instantiated.
const Connection *getConnection() const;
This method returns the OCI Ref from the Ref
object.
LNOCIRef *getRef() const;
This method checks if Ref
object is cleared.
bool isClear();
This method tests whether the Ref
object is null. If the Ref
object is null, then true is returned; otherwise, false is returned.
bool isNull() const;
This method marks the referenced object as deleted.
void markDelete();
This method dereferences the Ref
object and pins or fetches the referenced object if necessary. This might result in prefetching a graph of objects if prefetch attributes of the referenced object are set.
There are variants of syntax:
T * operator->();
const T * operator->() const;
This method dereferences the Ref
object and pins or fetches the referenced object if necessary. This might result in prefetching a graph of objects if prefetch attributes of the referenced object are set.
The object does not need to be deleted. Destructor would be automatically called when it goes out of scope.
There are variants of syntax:
T & operator *();
const T & operator*() const;
This method tests whether two Ref
objects are referencing the same object. If the Ref
objects are referencing the same object, then true is returned; otherwise, false is returned.
bool operator == (const Ref<T> &ref) const;
The Ref
object of the object to be compared.
This method tests whether two Ref
objects are referencing the same object. If the Ref
objects are not referencing the same object, then true is returned; otherwise, false is returned.
bool operator!= (const Ref<T> &ref) const;
The Ref
object of the object to be compared.
Assigns the ref or the object to a ref. For the first case, the refs are assigned and for the second case, the ref is constructed from the object and then assigned.
There are variants of syntax:
Ref<T>& operator=(const Ref<T> &src);
Ref<T>& operator=(const T *obj);
The source Ref object to be assigned.
The source object pointer whose Ref object is to be assigned.
This operator dereferences the Ref and pins/fetches the object if necessary. This might result in prefetching a graph of objects if prefetch attributes of the Ref are set.
There are variants of syntax:
T * ptr();
const T * ptr() const;
Sets the prefetching options for the complex object retrieval.
This method specifies depth up to which all objects reachable from this object through Ref
s (transitive closure) should be prefetched. If only selected attribute types are to be prefetched, then setPrefetch
(type_name
, depth
) should be used.
This method specifies which Ref attributes of the object it refers to should be followed for prefetching of the objects (complex object retrieval) and how many levels deep those links should be followed.
There are variants of syntax:
void setPrefetch(const string &typeName, unsigned int depth);
void setPrefetch(unsigned int depth);
Type of the Ref attribute to be prefetched.
Depth level to which the links should be followed.
This method specifies how the object should be locked when dereferenced.
void setLock(LockOptions);
The lock options.
Valid values are:
OCCI_LOCK_NONE
OCCI_LOCK_X
OCCI_LOCK_X_NOWAIT
This method sets the Ref
object to NULL
.
void setNull();
This method unmarks the referred object as dirty.
void unmarkDelete();
|
Copyright © 2001, 2002 Oracle Corporation. All Rights Reserved. |
|