A ResultSet
provides access to a table of data generated by executing a Statement
. Table rows are retrieved in sequence. Within a row, column values can be accessed in any order.
A ResultSet
maintains a cursor pointing to its current row of data. Initially the cursor is positioned before the first row. The next
method moves the cursor to the next row.
The get
xxx
()
methods retrieve column values for the current row. You can retrieve values using the index number of the column. Columns are numbered beginning at 1
. For the get
xxx
()
methods, OCCI attempts to convert the underlying data to the specified C++ type and returns a C++ value. SQL types are mapped to C++ types with the ResultSet::get
xxx
()
methods.
The number, types and properties of a ResultSet
's columns are provided by the MetaData
object returned by the getColumnListMetaData() method.
Table 13-38 Enumerated Values Used by ResultSet Class
Attribute | Options |
---|---|
Status |
|
Table 13-39 Summary of ResultSet Methods
Method | Description |
---|---|
Cancels the |
|
Closes the specified |
|
Returns the value of a column in the current row as a |
|
Returns the value of a column in the current row as a |
|
Returns the value of a column in the current row as a |
|
Returns the value of a column in the current row as a |
|
Returns the value of a column in the current row as a |
|
Returns the character set in which data would be fetched. |
|
Returns the character set in which data would be fetched as a |
|
Returns the value of a column in the current row as a |
|
Returns the describe information of the result set columns as a |
|
Returns the column index of the current readable |
|
Returns the current row of the |
|
Returns the nested cursor as a |
|
Returns the value of a column in the current row as a |
|
Returns whether data is in NCHAR character set or not. |
|
Returns the value of a column in the current row as a C++ double. |
|
Returns the value of a column in the current row as a C++ float. |
|
Returns the value of a column in the current row as a C++ int. |
|
Returns the value of a column in the current row as a |
|
Returns the value of a column in the current row as a |
|
Returns the value set by |
|
Returns the actual number of rows fetched in the last array fetch. |
|
Returns the value of a column in the current row as a |
|
Returns the value of a column in the current row as a |
|
Returns the value of a column in the current row as a |
|
Returns the current |
|
Returns the row id of the current row position. |
|
Returns the |
|
Returns the value of a column in the current row as a |
|
Returns the value of a column in the current row as a string. |
|
Returns the value of a column in the current row as a |
|
Returns the value of a column in the current row as a C++ unsigned int |
|
Returns the value of a column in the current row as a |
|
Returns the specified collection parameter as a vector. |
|
Returns the column in the current position as a vector of |
|
Checks whether the value is |
|
Checks whether truncation has occurred. |
|
Makes the next row the current row in a |
|
Returns the actual length of the parameter before truncation. |
|
Specifies that a column is to be returned as a binary stream. |
|
Specifies that a column is to be returned as a character stream. |
|
Specifies the character set in which the data is to be returned. |
|
Specifies the character set in which the data is to be returned. |
|
If the parameter is going to be retrieved from a column that contains data in the database's NCHAR character set, then OCCI must be informed by passing a true value. |
|
Specifies the data buffer into which data is to be fetched, or the gather and scatter binds and defines made. |
|
Enables Or Disables exception when |
|
Enables Or Disables exception when truncation occurs. |
|
Sets the amount of memory that is used internally by OCCI to store data fetched during each round trip to the server. |
|
Sets the number of rows that are fetched internally by OCCI during each round trip to the server. |
|
Specifies the maximum amount of data in bytes to read from a column. It should be based on the environment's character set, in which the |
|
Returns the current status of the |
This method closes the stream specified by the parameter stream
.
void closeStream( Stream *stream);
Parameter | Description |
---|---|
stream |
The Stream to be closed. |
This method returns the value of a column in the current row as a BDouble
. If the value is SQL NULL
, the result is NULL
.
BDouble getBDouble( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2, and so on. |
This method returns the value of a column in the current row as a Bfile
. Returns the column value; if the value is SQL NULL
, the result is NULL
.
Bfile getBfile( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
This method returns the value of a column in the current row as a BFloat
. If the value is SQL NULL
, the result is NULL
.
BFloat getBFloat( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value of a column in the current row as an Blob
. Returns the column value; if the value is SQL NULL
, the result is NULL
.
Blob getBlob( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value of a column in the current row as a Bytes
array. The bytes represent the raw values returned by the server. Returns the column value; if the value is SQL NULL
, the result is NULL
array
Bytes getBytes( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Gets the character set in which data would be fetched, as a string.
string getCharSet( unsigned int colIndex) const;
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Gets the character set in which data would be fetched, as a string.
UString getCharSetUString( unsigned int colIndex) const;
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value of a column in the current row as a Clob
. Returns the column value; if the value is SQL NULL
, the result is NULL
.
Clob getClob( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
The number, types and properties of a ResultSet
's columns are provided by the getMetaData
method. Returns the description of a ResultSet
's columns. This method returns the value of the given column as a PObject
. The type of the C++ object is the C++ PObject
type corresponding to the column's SQL type registered with Environment
's map. This method is used to materialize data of SQL user-defined types.
vector<MetaData> getColumnListMetaData() const;
If the result set has any input Stream
parameters, this method returns the column index of the current input Stream
that must be read. If no output Stream
must be read, or there are no input Stream
columns in the result set, this method returns 0
. Returns the column index of the current input Stream
column that must be read.
unsigned int getCurrentStreamColumn() const;
If the result has any input Stream
s, this method returns the current row of the result set that is being processed by OCCI. If this method is called after all the rows in the set of array of rows have been processed, it returns 0
. Returns the row number of the current row that is being processed. The first row is numbered 1
and so on.
unsigned int getCurrentStreamRow() const;
Get the nested cursor as an ResultSet
. Data can be fetched from this result set. A nested cursor results from a nested query with a CURSOR(SELECT...)
clause:
SELECT last_name, CURSOR(SELECT department_name FROM departments) FROM employees WHERE last_name = 'JONES'
Note that if there are multiple REF
CURSOR
s being returned, data from each cursor must be completely fetched before retrieving the next REF
CURSOR
and starting fetch on it. Returns A ResultSet
for the nested cursor.
ResultSet * getCursor( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Returns whether data is in NCHAR
character set or not.
bool getDatabaseNCHARParam( unsigned int paramIndex) const;
Parameter | Description |
---|---|
paramIndex |
Parameter index, first parameter is 1 , second is 2 , and so on. |
Get the value of a column in the current row as a Date
object. Returns the column value; if the value is SQL NULL
, the result is NULL
.
Date getDate( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Gets the value of a column in the current row as a C++ double. Returns the column value; if the value is SQL NULL
, the result is 0
.
double getDouble( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value of a column in the current row as a C++ float. Returns the column value; if the value is SQL NULL
, the result is 0
.
float getFloat( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value of a column in the current row as a C++ int. Returns the column value; if the value is SQL NULL
, the result is 0
.
int getInt( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value of a column in the current row as a IntervalDS
object. Returns the column value; if the value is SQL NULL
, the result is NULL
.
IntervalDS getIntervalDS( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value of a column in the current row as a IntervalYM
object. Returns the column value; if the value is SQL NULL
, the result is NULL.
IntervalYM getIntervalYM( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value set by setMaxColumnSize().
unsigned int getMaxColumnSize( unsigned int colIndex) const;
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Returns the actual number of rows fetched in the last array fetch. Used in conjunction with the next() method. This method cannot be used for non-array fetches.
unsigned int getNumArrayRows() const;
Get the value of a column in the current row as a Number
object. Returns the column value; if the value is SQL NULL
, the result is NULL
.
Number getNumber( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Returns a pointer to a PObject
holding the column value.
PObject * getObject( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index; first column is 1, second is 2, and so on. |
Get the value of a column in the current row as a RefAny
. Retrieving a Ref
value does not materialize the data to which Ref
refers. Also the Ref
value remains valid while the session or connection on which it is created is open. Returns a RefAny
holding the column value.
RefAny getRef( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the current row id for a SELECT...FOR UPDATE
statement. The row id can be bound to a prepared DELETE
statement and so on. Returns current rowid
for a SELECT...FOR UPDATE
statement.
Bytes getRowid( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
This method returns the value of a column in the current row as a Stream
.
Stream * getStream( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value of a column in the current row as a string. Returns the column value; if the value is SQL NULL
, the result is an empty string.
string getString( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value of a column in the current row as a Timestamp object. Returns the column value; if the value is SQL NULL
, the result is NULL
.
Timestamp getTimestamp( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Get the value of a column in the current row as a C++ int
. Returns the column value; if the value is SQL NULL
, the result is 0
.
unsigned int getUInt( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
Returns the value as a UString
.
This method should be called only if the environment's character set is UTF16, or if setCharset()
method has been called to explicitly retrieve UTF16 data.
UString getUString( unsigned int colIndex);
Parameter | Description |
---|---|
colIndex |
Column index; first column is 1, second is 2, and so on. |
This method returns the column in the current position as a vector. The column should be a collection type (varray or nested table). The SQL type of the elements in the collection should be compatible with the data type of the objects in the vector.
Syntax | Description |
---|---|
void getVector( ResultSet *rs, unsigned int colIndex, vector<BDouble> &vect); |
Used for BDouble vectors. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Bfile> &vect); |
Used for Bfile vectors. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<BFloat> &vect); |
Used for BFloat vectors. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Blob> &vect); |
Used for Blob vectors. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Bytes> &vect); |
Used for vectors of Bytes Class. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Clob> &vect); |
Used for Clob vectors. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Date> &vect); |
Used for vectors of Date Class. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<double> &vect); |
Used for vectors of double type. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<float> &vect); |
Used for vectors of float type. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<int> &vect); |
Used for vectors of int type. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<IntervalDS> &vect); |
Used for vectors of IntervalDS Class. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<IntervalYM> &vect); |
Used for vectors of IntervalYM Class. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Number> &vect); |
Used for vectors of Number Class. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Ref<T>> &vect); |
Available only on platforms where partial ordering of function templates is supported. This function may be deprecated in the future. getVectorOfRefs() can be used instead. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<RefAny> &vect); |
Used for vectors of RefAny Class. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<string> &vect); |
Used for vectors of string type. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<T *> &vect); |
Intended for use on platforms where partial ordering of function templates is supported. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<T> &vect); |
Intended for use on platforms where partial ordering of function templates is not supported, such as Windows NT and z/OS. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Timestamp> &vect); |
Used for vectors of Timestamp Class. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<unsigned int> &vect); |
Used for vectors of unsigned int type. |
void getVector( ResultSet *rs, unsigned int colIndex, vector<UString> &vect); |
Used for vectors of UString Class; globalization enabled. |
Parameter | Description |
---|---|
rs |
The result set |
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
vect |
The reference to the vector (OUT parameter). |
Returns the column in the current position as a vector of REF
s. The column should be a collection type (varray or nested table) of REF
s. It is recommend to use this function instead of specialized method getVector() for Ref<T>
.
void getVectorOfRefs( ResultSet *rs, unsigned int colIndex, vector< Ref<T> > &vect);
Parameter | Description |
---|---|
rs |
The result set |
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
vect |
The reference to the vector of REF s (OUT parameter). |
A column may have the value of SQL NULL
; isNull()
reports whether the last column read had this special value. Note that you must first call get
xxx
()
on a column to try to read its value and then call isNull()
to find if the value was the SQL NULL
. Returns TRUE
if last column read was SQL NULL
.
bool isNull( unsigned int colIndex) const;
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
This method checks whether the value of the parameter is truncated. If the value of the parameter is truncated, then TRUE
is returned; otherwise, FALSE
is returned.
bool isTruncated( unsigned int paramIndex) const;
Parameter | Description |
---|---|
paramIndex |
Parameter index, first parameter is 1 , second is 2 , and so on. |
This method fetches a specified number of rows, numRows
, from a previously executed query, and reports the Status
of this fetch as defined in Table 13-38.
For non-streamed mode, next() only returns the status of DATA_AVAILABLE
or END_OF_FETCH
.
When fetching one row at a time (numRows
=1), process the data using get
xxx
()
methods.
When fetching several rows at once (numRows>1
), as in an Array Fetch, you must use the setDataBuffer() method to specify the location of your preallocated buffers before invoking next().
Up to numRows
data records would populate the buffers specified by the setDataBuffer() call. To determine exactly how many records were returned, use the getNumArrayRows() method.
Status next( unsigned int numRows =1);
Parameter | Description |
---|---|
numRows |
Number of rows to fetch for array fetches. |
Returns the actual length of the parameter before truncation.
int preTruncationLength( unsigned int paramIndex) const;
Parameter | Description |
---|---|
paramIndex |
Parameter index, first parameter is 1 , second is 2 , and so on. |
Defines that a column is to be returned as a binary stream by the getStream
method.
void setBinaryStreamMode( unsigned int colIndex, unsigned int size);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
size |
The amount of data to be read as a binary stream. |
Defines that a column is to be returned as a character stream by the getStream() method.
void setCharacterStreamMode( unsigned int colIndex, unsigned int size);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
size |
The amount of data to be read as a character stream. |
Overrides the default character set for the specified column. Data is converted from the database character set to the specified character set for this column.
void setCharSet( unsigned int colIndex, string charSet);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
charSet |
Desired character set, as a string. |
Specifies the character set value as a UString
in which the data is returned.
UString setCharSetUString( unsigned int colIndex, const UString &charSet);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
charSet |
Desired character set, as a string. |
If the parameter is going to be retrieved from a column that contains data in the database's NCHAR
character set, then OCCI must be informed by passing a TRUE
value. A FALSE
can be passed to restore the default.
void setDatabaseNCHARParam( unsigned int paramIndex, bool isNCHAR);
Parameter | Description |
---|---|
paramIndex |
Parameter index, first parameter is 1 , second is 2 , and so on. |
isNCHAR |
TRUE or FALSE. |
Specifies a data buffer where data would be fetched or bound. The buffer
parameter is a pointer to a user allocated data buffer. The current length of data must be specified in the length
parameter. The amount of data should not exceed the size
parameter. Finally, type
is the data type of the data. Only non OCCI and non C++ specific types can be used, such as STL string. OCCI classes like Bytes
and Date
cannot be used.
If setDataBuffer() is used to fetch data for array fetches, it should be called only once for each result set. Data for each row is assumed to be at buffer (i- 1)
location, where i
is the row number. Similarly, the length of the data would be assumed to be at (length+(i-1)).
For more information on the version of this method that uses 32K length
parameter, see Oracle Database SQL Language Reference.
Syntax | Description |
---|---|
void setDataBuffer( unsigned int colIndex, void *buffer, Type type, sb4 size = 0, ub2 *length = NULL, sb2 *ind = NULL, ub2 *rc = NULL); |
Uses ub2 length buffer. This limits VARCHAR2 and NVARCHAR2 length to 4,000 bytes, and RAW data types to 2,000 bytes. |
void setDataBuffer( unsigned int colIndex, void *buffer, Type type, sb4 size = 0, ub4 *length = NULL, sb2 *ind = NULL, ub2 *rc = NULL); |
Uses ub4 length buffer (32K). This increases the length of VARCHAR2 , NVARCHAR2 and RAW data types. |
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
buffer |
Pointer to user-allocated buffer. For array fetches, it should have numRows * size bytes in it. For gather or scatter binds and defines, this structure stores the address of OCIIOVec and the number of OCIIOVec elements that start at that address. |
type |
Type of the data that is provided (or retrieved) in the buffer. |
size |
Size of the data buffer. For array fetches, it is the size of each element of the data items. |
length |
Pointer to the length of data in the buffer; for array fetches, it should be an array of length data for each buffer element; the size of the array should be equal to arrayLength. |
ind |
Pointer to an indicator variable or array (IN /OUT ). |
rc |
Pointer to array of column level return codes (OUT ). |
This method enables/disables exceptions for reading of NULL
values on colIndex
column of the result set.
void setErrorOnNull( unsigned int colIndex, bool causeException);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
causeException |
Enable exceptions if TRUE . Disable if FALSE. |
This method enables/disables exceptions when truncation occurs.
void setErrorOnTruncate( unsigned int paramIndex, bool causeException);
Parameter | Description |
---|---|
paramIndex |
Parameter index, first parameter is 1 , second is 2 , and so on. |
causeException |
Enable exceptions if TRUE . Disable if FALSE. |
Sets the amount of memory that is used internally by OCCI to store data fetched during each round trip to the server. A value of 0
means that the amount of data fetched during the round trip is constrained by the FetchRowCount
parameter. If both parameters are nonzero, the smaller of the two is used.
void setPrefetchMemorySize( unsigned int bytes);
Parameter | Description |
---|---|
bytes |
Number of bytes used for storing data fetched during each server round trip. |
Sets the number of rows that are fetched internally by OCCI during each round trip to the server. A value of 0
means that the amount of data fetched during the round trip is constrained by the FetchMemorySize
parameter. If both parameters are nonzero, the smaller of the two is used. If both of these parameters are zero, row count internally defaults to 1
row and that is the value returned from the getFetchRowCount()
method.
void setPrefetchRowCount( unsigned int rowCount);
Parameter | Description |
---|---|
rowCount |
Number of rows to fetch for each round trip to the server. |
Specifies the maximum amount of data in bytes to read from a column. It should be based on the environment's character set, in which the env
has been created.
void setMaxColumnSize( unsigned int colIndex, unsigned int max);
Parameter | Description |
---|---|
colIndex |
Column index, first column is 1 , second is 2 , and so on. |
max |
The maximum amount of data in bytes to be read. |
Returns the current Status
of the result set, as defined in Table 13-38. This method can be called repeatedly.
Status status() const;