ResultSetは、Statementの実行で生成されたデータの表へのアクセスを提供します。表の行は順序に従って取り出されます。1行の中の列値は、どのような順序でもアクセスできます。
ResultSetは、データの現在行を指し示すカーソルを保持しています。最初、カーソルは第1行目の前にあります。nextメソッドによって、カーソルが次の行に移動します。
getxxx()メソッドを使用して、現在行の列値を取り出します。列の索引番号を使用して値を取り出すことができます。各列には、1から順に番号が付けられています。getxxx()メソッドの場合、OCCIは、基礎となるデータを指定されたC++型に変換して、C++の値を戻そうとします。SQL型はResultSet::getxxx()メソッドを使用してC++型にマップされます。
ResultSetの列の番号、型およびプロパティは、getColumnListMetaData()メソッドが戻すMetaDataオブジェクトによって指定されます。
表13-37 ResultSetクラスで使用される列挙値
| 属性 | オプション |
|---|---|
Status |
|
| メソッド | 説明 |
|---|---|
|
|
|
|
|
指定された |
|
|
現在行の列の値を |
|
|
現在行の列の値を |
|
|
現在行の列の値を |
|
|
現在行の列の値を |
|
|
現在行の列の値を |
|
|
データをフェッチするキャラクタ・セットを戻します。 |
|
|
データをフェッチするキャラクタ・セットを |
|
|
現在行の列の値を |
|
|
結果セット列の記述情報を |
|
|
現行の読込み可能 |
|
|
処理している |
|
|
ネストしたカーソルを |
|
|
現在行の列の値を |
|
|
データがNCHARキャラクタ・セットにあるかどうかを戻します。 |
|
|
現在行の列の値をC++ のdouble型で戻します。 |
|
|
現在行の列の値をC++のfloat型で戻します。 |
|
|
現在行の列の値をC++のint型で戻します。 |
|
|
現在行の列の値を |
|
|
現在行の列の値を |
|
|
列から読み込むデータの最大量を戻します。 |
|
|
最後の配列フェッチで実際にフェッチした行数を戻します。 |
|
|
現在行の列の値を |
|
|
現在行の列の値を |
|
|
現在行の列の値を |
|
|
|
|
|
現在行の位置のROWIDを戻します。 |
|
|
|
|
|
現在行の列の値を |
|
|
現在行の列の値を文字列で戻します。 |
|
|
現在行の列の値を |
|
|
現在行の列の値をC++のunsigned int型で戻します。 |
|
|
現在行の列の値を |
|
|
指定されたコレクション・パラメータをベクターで戻します。 |
|
|
現行の位置の列を |
|
|
値が |
|
|
切捨てが発生したかどうかをチェックします。 |
|
|
|
|
|
切捨て前のパラメータの実際の長さを戻します。 |
|
|
列をバイナリ・ストリームで戻すように指定します。 |
|
|
列をキャラクタ・ストリームで戻すように指定します。 |
|
|
データを戻すキャラクタ・セットを指定します。 |
|
|
データを戻すキャラクタ・セットを指定します。 |
|
|
パラメータを、データベースのNCHARキャラクタ・セットのデータが含まれている列から取り出そうとする場合は、true値を渡すことによって、そのことをOCCIに通知する必要があります。 |
|
|
データをフェッチする、または収集および分散のバインドと定義が行われるデータ・バッファを指定します。 |
|
|
|
|
|
切捨てが発生する際の例外を使用可能または使用禁止にします。 |
|
|
列から読み込むデータの最大量を指定します。 |
|
|
|
このメソッドは結果セットを取り消します。
構文
void cancel();
このメソッドは、パラメータstreamによって指定されたストリームをクローズします。
構文
void closeStream( Stream *stream);
| パラメータ | 説明 |
|---|---|
stream |
クローズするStreamを指定します。 |
このメソッドは、現在行の列の値をBDoubleで戻します。値がSQLのNULLの場合、結果はNULLです。
構文
BDouble getBDouble( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
このメソッドは、現在行の列の値をBfileで戻します。列の値を戻します。値がSQLのNULLの場合、結果はNULLです。
構文
Bfile getBfile( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
このメソッドは、現在行の列の値をBFloatで戻します。値がSQLのNULLの場合、結果はNULLです。
構文
BFloat getBFloat( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をBlobで取得します。列の値を戻します。値がSQLのNULLの場合、結果はNULLです。
構文
Blob getBlob( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をBytes配列で取得します。バイト数はサーバーによって戻される行の値を示します。列の値を戻します。値がSQLのNULLの場合、結果はNULLの配列です。
構文
Bytes getBytes( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
データをフェッチするキャラクタ・セットを文字列で取得します。
構文
string getCharSet( unsigned int colIndex) const;
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
データをフェッチするキャラクタ・セットを文字列で取得します。
構文
UString getCharSetUString( unsigned int colIndex) const;
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をClobで取得します。列の値を戻します。値がSQLのNULLの場合、結果はNULLです。
構文
Clob getClob( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
ResultSetの列の番号、型およびプロパティは、getMetaDataメソッドによって指定されます。ResultSetの列の説明を戻します。指定された列の値をPObjectで戻します。C++オブジェクトの型は、Environmentのマップに登録されている列のSQL型に対応するC++ PObject型になります。このメソッドは、SQLユーザー定義型のデータをマテリアライズするために使用します。
構文
vector<MetaData> getColumnListMetaData() const;
結果セットに入力Streamパラメータがある場合、このメソッドは読込みが必要な現行の入力Streamの列索引を戻します。出力Streamを読み取る必要がない場合、または結果セットに入力Stream列がない場合、このメソッドは0(ゼロ)を戻します。読込みが必要な現行の入力Stream列の列索引を戻します。
構文
unsigned int getCurrentStreamColumn() const;
結果に入力Streamがない場合、このメソッドはOCCIで処理中の結果セットの現在行を戻します。このメソッドは、行の配列セットに含まれる行がすべて処理された後にコールされると0(ゼロ)を戻します。処理中の現在行の行番号を戻します。第1行目は1、第2行目は2のようになります。
構文
unsigned int getCurrentStreamRow() const;
ネストしたカーソルをResultSetで取得します。この結果セットからデータをフェッチできます。 ネストしたカーソルは、CURSOR(SELECT ... )句でネストされた問合せの結果として生じます。
SELECT ename,
CURSOR(SELECT dname, loc FROM dept)
FROM emp WHERE ename = 'JONES'
戻されるREF CURSORが複数の場合は、次のREF CURSORを取得してフェッチを開始する前に、各カーソルからのデータを完全にフェッチする必要があります。ネストしたカーソルに対してResultSetを1つ戻します。
構文
ResultSet * getCursor( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
データがNCHARキャラクタ・セットにあるかどうかを戻します。
構文
bool getDatabaseNCHARParam( unsigned int paramIndex) const;
| パラメータ | 説明 |
|---|---|
paramIndex |
パラメータの索引を、第1パラメータは1、第2パラメータは2のように指定します。 |
現在行の列の値をDateオブジェクトで取得します。列の値を戻します。値がSQLのNULLの場合、結果はNULLです。
構文
Date getDate( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をC++のdouble型で取得します。列の値を戻します。値がSQLのNULLの場合、結果は0(ゼロ)です。
構文
double getDouble( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をC++のfloat型で取得します。列の値を戻します。値がSQLのNULLの場合、結果は0(ゼロ)です。
構文
float getFloat( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をC++のint型で取得します。列の値を戻します。値がSQLのNULLの場合、結果は0(ゼロ)です。
構文
int getInt( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をIntervalDSオブジェクトで取得します。列の値を戻します。値がSQLのNULLの場合、結果はNULLです。
構文
IntervalDS getIntervalDS( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をIntervalYMオブジェクトで取得します。列の値を戻します。値がSQLのNULLの場合、結果はNULLです。
構文
IntervalYM getIntervalYM( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
列に読み込むデータの最大量を取得します。
構文
unsigned int getMaxColumnSize( unsigned int colIndex) const;
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
最後の配列フェッチで実際にフェッチした行数を戻します。next()メソッドと組み合せて使用します。このメソッドは、配列以外のフェッチには使用できません。
構文
unsigned int getNumArrayRows() const;
現在行の列の値をNumberオブジェクトで取得します。列の値を戻します。値がSQLのNULLの場合、結果はNULLです。
構文
Number getNumber( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
列値を保持しているPObjectへのポインタを戻します。
構文
PObject * getObject( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をRefAnyで取得します。Ref値を取得しても、Refが参照するデータはマテリアライズされません。また、Ref値は、この値が作成されたセッションまたは接続がオープンしている間、値が保持されます。列値を保持しているRefAnyを戻します。
構文
RefAny getRef( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
SELECT ... FOR UPDATE文の現行のROWIDを取得します。このROWIDは、プリコンパイルされたDELETE文などにバインドできます。 SELECT ... FOR UPDATE文の現行のrowidを戻します。
構文
Bytes getRowid( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
このメソッドは、現在行の位置のrowidを取得します。
構文
Bytes getRowPosition() const;
このメソッドは、ResultSetのstatementを戻します。
構文
Statement* getStatement() const;
現在行の列の値をStreamで戻します。
構文
Stream * getStream( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値を文字列で取得します。列の値を戻します。値がSQLのNULLの場合、結果は空の文字列です。
構文
string getString( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をTimestampオブジェクトで取得します。列の値を戻します。値がSQLのNULLの場合、結果はNULLです。
構文
Timestamp getTimestamp( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
現在行の列の値をC++のint型で取得します。列の値を戻します。値がSQLのNULLの場合、結果は0(ゼロ)です。
構文
unsigned int getUInt( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
値をUStringで戻します。
|
注意: このメソッドをコールする必要があるのは、環境のキャラクタ・セットがUTF16の場合、またはUTF16データを明示的に取得するために setCharset()メソッドがコールされている場合のみです。 |
構文
UString getUString( unsigned int colIndex);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
このメソッドは、現行の位置の列をベクターで戻します。列はコレクション型(VARRAYまたはネストした表)であることが必要です。コレクション内の要素のSQL型は、ベクター内のオブジェクトのデータ型との互換性が必要です。
| 構文 | 説明 |
|---|---|
void getVector( ResultSet *rs, unsigned int colIndex, vector<BDouble> &vect); |
BDoubleのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Bfile> &vect); |
Bfileのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<BFloat> &vect); |
BFloatのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Blob> &vect); |
Blobのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Clob> &vect); |
Clobのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Date> &vect); |
Dateクラスのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<double> &vect); |
double型のベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<float> &vect); |
float型のベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<int> &vect); |
int型のベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<IntervalDS> &vect); |
IntervalDSクラスのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<IntervalYM> &vect); |
IntervalYMクラスのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Number> &vect); |
Numberクラスのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Ref<T>> &vect); |
この構文は、関数テンプレートの一部の順序付けがサポートされているプラットフォームでのみ使用できます。この関数は今後非推奨になる可能性があります。かわりにgetVectorOfRefs()を使用できます。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<RefAny> &vect); |
RefAnyクラスのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<string> &vect); |
string型のベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<T *> &vect); |
この構文は、関数テンプレートの一部の順序付けがサポートされているプラットフォームで使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<T> &vect); |
この構文は、Windows NTおよびz/OSなど、関数テンプレートの一部の順序付けがサポートされていないプラットフォームで使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<Timestamp> &vect); |
Timestampクラスのベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<unsigned int> &vect); |
unsigned int型のベクターに使用します。 |
void getVector( ResultSet *rs, unsigned int colIndex, vector<UString> &vect); |
UStringクラスのベクターに使用します。グローバリゼーション対応の場合です。 |
| パラメータ | 説明 |
|---|---|
rs |
結果セットを指定します。 |
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
vect |
ベクター(OUTパラメータ)への参照を指定します。 |
現行の位置の列をREFのベクターで戻します。列はREFのコレクション型(VARRAYまたはネストした表)であることが必要です。Ref<T>に対しては、特化したメソッドのgetVector()ではなく、この関数の使用をお薦めします。
構文
void getVectorOfRefs( ResultSet *rs, unsigned int colIndex, vector< Ref<T> > &vect);
| パラメータ | 説明 |
|---|---|
rs |
結果セットを指定します。 |
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
vect |
REFのベクター(OUTパラメータ)への参照を指定します。 |
列には、SQLのNULLの値が含まれることがあります。isNull()は、最後の列の読込みで、この特別な値があったかどうかをレポートします。値がSQLのNULLかどうかを調べるには、最初に列に対してgetxxx()をコールしてその値の読込みを試行し、次に、isNull()をコールする必要があります。最後の列の読込みがSQLのNULLであった場合はTRUEを戻します。
構文
bool isNull( unsigned int colIndex) const;
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
このメソッドは、パラメータの値が切り捨てられているかどうかをチェックします。パラメータの値が切り捨てられている場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool isTruncated( unsigned int paramIndex) const;
| パラメータ | 説明 |
|---|---|
paramIndex |
パラメータの索引を、第1パラメータは1、第2パラメータは2のように指定します。 |
このメソッドは、前回実行した問合せから指定の行数(numRows)をフェッチし、このフェッチのStatusをレポートします(表13-37の定義を参照)。
非ストリーム・モードの場合、next()は、ステータスDATA_AVAILABLEまたはEND_OF_FETCHのみを戻します。
1度に1つの行をフェッチする場合(numRows=1)、getxxx()メソッドを使用してデータを処理します。
配列フェッチのように1度に複数行をフェッチする場合(numRows>1の場合)は、setDataBuffer()メソッドを使用して、事前割当てしたバッファの位置を指定してから、next()を起動する必要があります。
setDataBuffer()コールによって指定したバッファには、最大numRows個のデータ・レコードを移入できます。戻された正確なレコード数を確認するには、getNumArrayRows()メソッドを使用します。
構文
Status next( unsigned int numRows =1);
| パラメータ | 説明 |
|---|---|
numRows |
配列フェッチに対してフェッチする行数を指定します。 |
切捨て前のパラメータの実際の長さを戻します。
構文
int preTruncationLength( unsigned int paramIndex) const;
| パラメータ | 説明 |
|---|---|
paramIndex |
パラメータの索引を、第1パラメータは1、第2パラメータは2のように指定します。 |
getStreamメソッドが、列をバイナリ・ストリームで戻すように定義します。
構文
void setBinaryStreamMode( unsigned int colIndex, unsigned int size);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
size |
バイナリ・ストリームで読み込まれるデータ量を指定します。 |
getStreamメソッドが列をキャラクタ・ストリームで戻すように定義します。
構文
void setCharacterStreamMode( unsigned int colIndex, unsigned int size);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
size |
キャラクタ・ストリームで読み込まれるデータ量を指定します。 |
指定された列のデフォルトのキャラクタ・セットを上書きします。データが、データベースのキャラクタ・セットからこの列に指定されたキャラクタ・セットに変換されます。
構文
void setCharSet( unsigned int colIndex, string charSet);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
charSet |
希望するキャラクタ・セットを文字列で指定します。 |
キャラクタ・セット値のデータがUStringとして戻されるように指定します。
構文
UString setCharSetUString( unsigned int colIndex, const UString &charSet);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
charSet |
希望するキャラクタ・セットを文字列で指定します。 |
データベースのNCHARキャラクタ・セットのデータが含まれている列からパラメータを取り出す場合は、TRUE値を渡すことによって、そのことをOCCIに通知する必要があります。デフォルトをリストアするにはFALSEを渡します。
構文
void setDatabaseNCHARParam( unsigned int paramIndex, bool isNCHAR);
| パラメータ | 説明 |
|---|---|
paramIndex |
パラメータの索引を、第1パラメータは1、第2パラメータは2のように指定します。 |
isNCHAR |
TRUEまたはFALSEを指定します。 |
データをフェッチまたはバインドするデータ・バッファを指定します。このbufferパラメータは、ユーザーが割り当てたデータ・バッファへのポインタです。データの現在の長さをlengthパラメータに指定する必要があります。データ量は、sizeパラメータを超えないようにします。typeには、データのデータ型を指定します。使用できるのは、STL文字列など、OCCI固有でもC++固有の型でもない型のみです。BytesやDateなどのOCCIクラスは使用できません。
配列フェッチ用に、setDataBuffer()を使用してデータをフェッチする場合は、各結果セットごとに1回のみコールする必要があります。各行のデータは、buffer (i- 1)(iは行番号)の位置にあるとみなされます。同様に、データの長さは、(length+(i-1))とみなされます。
構文
void setDataBuffer( unsigned int colIndex, void *buffer, Type type, sb4 size = 0, ub2 *length = NULL, sb2 *ind = NULL, ub2 *rc = NULL);
| パラメータ | 説明 |
|---|---|
| colIndex | 列の索引を、第1列は1、第2列は2のように指定します。 |
buffer |
ユーザーが割り当てたバッファへのポインタを指定します。配列フェッチが行われる場合、バッファにはnumRows * sizeのバイト数が必要です。収集または分散のバインドおよび定義が行われる場合、この構造には、OCIIOVecのアドレスおよびそのアドレスで開始されるOCIIOVec要素の数が格納されます。 |
type |
バッファに入る(取得する)データの型を指定します。 |
size |
データ・バッファのサイズを指定します。配列フェッチの場合、このサイズはデータ項目の各要素のサイズです。 |
length |
バッファのデータ長へのポインタを指定します。配列フェッチの場合、データ長は各バッファ要素に対する長さデータの配列です。配列のサイズはarrayLengthと等しくしてください。 |
ind |
標識変数または配列へのポインタ(IN/OUT)を指定します。 |
rc |
列レベルのリターン・コードの配列へのポインタ(OUT)を指定します。 |
colIndex列でのNULL値の読込みに対する例外を使用可能または使用禁止にします。
構文
void setErrorOnNull( unsigned int colIndex, bool causeException);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
causeException |
TRUEの場合、例外は使用可能です。FALSEの場合は使用禁止です。 |
構文
void setErrorOnTruncate( unsigned int paramIndex, bool causeException);
| パラメータ | 説明 |
|---|---|
paramIndex |
パラメータの索引を、第1パラメータは1、第2パラメータは2のように指定します。 |
causeException |
TRUEの場合、例外は使用可能です。FALSEの場合は使用禁止です。 |
構文
void setMaxColumnSize( unsigned int colIndex, unsigned int max);
| パラメータ | 説明 |
|---|---|
colIndex |
列の索引を、第1列は1、第2列は2のように指定します。 |
max |
読み込むデータの最大量を指定します。 |
Statusを戻します。表13-37の定義を参照してください。 このメソッドは、繰り返しコールできます。
構文
Status status() const;