Clobクラスは、CLOB型オブジェクトの共通プロパティを定義します。Clobは、データベース表の行の列値として格納されるラージ・キャラクタ・オブジェクトです。Clobオブジェクトには、CLOBへの論理ポインタが含まれていますが、CLOB自体は含まれていません。
Clobクラスのメソッドを使用すると、Clobオブジェクトに関連する特定のタスクを実行できます。これには、SQL CLOBの長さを取得するためのメソッド、クライアント上のCLOBをマテリアライズするためのメソッドおよびCLOBの一部を抽出するためのメソッドも含まれます。
NULLのCLOBオブジェクトに対して有効なメソッドは、setName()、isNull()およびoperator=()のみです。
getClob()やsetClob()など、ResultSetクラスとStatementクラスのメソッドによって、SQL CLOBの値にアクセスできます。
未初期化のCLOBオブジェクトは、次の方法で初期化できます。
setEmpty()メソッドを実行します。 次に、このCLOBを表に挿入してCLOBを変更すると、SELECT ... FOR UPDATEを使用してその内容を取り出すことができます。write()メソッドによってCLOBは変更されますが、変更されたデータは、トランザクションがコミットされたときにのみ表にフラッシュされます。INSERTは必要ありません。
初期化したClobオブジェクトを割り当てます。
| メソッド | 概要 |
|---|---|
|
|
|
|
|
|
|
|
前にオープンした |
|
|
現行の |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
指定した |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
現行の |
|
|
|
|
|
|
|
|
2つの |
|
|
2つの |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
特定の |
|
|
|
|
|
バッファをオープンしていない |
|
|
Clobクラスのコンストラクタです。
| 構文 | 説明 |
|---|---|
Clob(); |
NULLのClobオブジェクトを作成します。 |
Clob( const Connection *connectionp); |
未初期化のClobオブジェクトを構築します。 |
Clob( const Clob *srcClob); |
Clobオブジェクトのコピーを作成します。 |
| パラメータ | 説明 |
|---|---|
connectionp |
接続ポインタを指定します。 |
srcClob |
コピー元のClobオブジェクトを指定します。 |
CLOBを現行のCLOBの最後に追加します。
構文
void append( const Clob &srcClob);
| パラメータ | 説明 |
|---|---|
srcClob |
現行のCLOBに追加するCLOBを指定します。 |
CLOBをクローズします。
構文
void close();
CLOBから取得したStreamオブジェクトをクローズします。
構文
void closeStream( Stream *stream);
| パラメータ | 説明 |
|---|---|
stream |
クローズするStreamオブジェクトを指定します。 |
BFILEまたはCLOBの一部またはすべてを現行のCLOBにコピーします。
OCCIは、BfileからClobにデータをロードする際にキャラクタセット変換を実行しません。そのため、Bfileの内容がサーバーのClob記憶域キャラクタセット内の文字データであることを確認してください。
| 構文 | 説明 |
|---|---|
void copy( const Bfile &srcBfile, unsigned int numBytes, unsigned int dstOffset = 1, unsigned int srcOffset = 1); |
BFILEを現行のCLOBにコピーします。 |
void copy( const Clob &srcClob, unsigned int numBytes, unsigned int dstOffset = 1, unsigned int srcOffset = 1); |
CLOBを現行のCLOBにコピーします。
コピー先の |
| パラメータ | 説明 |
|---|---|
srcBfile |
データのコピー元のBFILEを指定します。 |
srcClob |
データのコピー元のCLOBを指定します。 |
numBytes |
コピー元のBFILEまたはコピー元のCLOBからコピーするバイト数を指定します。有効な値は0(ゼロ)以上の数値です。 |
dstOffset |
データの開始位置は0(ゼロ)です。
現行の |
srcOffset |
ソースBFILEまたはソースCLOBから読み取るデータの開始位置を指定します。有効な値は、1以上の数値です。 |
CLOBのキャラクタ・セット・フォームを戻します。
構文
CharSetForm getCharSetForm() const;
CLOBのキャラクタ・セットIDを文字列形式で戻します。
構文
string getCharSetId() const;
Clobで使用されるキャラクタ・セットの名前のUStringバージョンを取得します。
構文
UString getCharSetIdUString() const;
CLOBへの効率的な書込みを実行するための最小データ・サイズを戻します。
構文
unsigned int getChunkSize() const;
指定したLobOptionTypeに対するCLOBのLobOptionValueを戻します。
CLOBが格納されたデータベース列またはパーティションに対して設定されていないオプションの値を取得しようとすると、例外が発生します。
構文
LobOptionValue getOptions( LobOptionType optType);
| パラメータ | 説明 |
|---|---|
optType |
要求されるLobOptionTypeの設定です。これらの設定は、サーバーのラウンドトリップを避けるため、ビット単位のor(|)を使用して結合できます。表7-1「LobOptionType型の値」および表7-2「LobOptionValue型の値」を参照してください。 |
CLOBからStreamオブジェクトを戻します。ストリームがすでにオープンしている場合は、別のストリームをCLOBオブジェクトでオープンすることはできません。したがって、ユーザーはClobオブジェクト操作を実行する前に、ストリームを常にクローズする必要があります。キャラクタ・セットIDとフォームは、setCharSetId()およびsetEmpty()のコールで明示的に設定されていない場合、デフォルトでクライアントのキャラクタ・セットIDとフォームが使用されます。
構文
Stream* getStream( unsigned int offset = 1, unsigned int amount = 0);
| パラメータ | 説明 |
|---|---|
offset |
CLOBから読み取るデータの開始位置を指定します。offsetが未指定の場合、データはCLOBの最初から書き込まれます。有効な値は、1以上の数値です。 |
amount |
連続して読み込む文字数の合計を指定します。amountが0(ゼロ)の場合は、offset値からCLOBの最後までのデータが読み取られます。 |
Clobオブジェクトが初期化されているかどうかを確認します。Clobオブジェクトが初期化されている場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool isInitialized() const;
ClobオブジェクトがアトミックNULLかどうかをテストします。ClobオブジェクトがアトミックNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool isNull() const;
CLOBがオープンしているかどうかを確認します。CLOBがオープンしている場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool isOpen() const;
CLOBの文字数を戻します。
構文
unsigned int length() const;
CLOBを読込み/書込みモードまたは読込み専用モードでオープンします。
構文
void open( LObOpenMode mode = OCCI_LOB_READWRITE);
| パラメータ | 説明 |
|---|---|
mode |
CLOBをオープンするモードを指定します。有効な値は、次のとおりです。
|
現行のCLOBにCLOBを割り当てます。割当て元CLOBは、割当て先CLOBが表に格納されているときにのみ、その割当て先CLOBにコピーされます。
構文
Clob& operator=( const Clob &srcClob);
| パラメータ | 説明 |
|---|---|
srcClob |
データのコピー元のClobを指定します。 |
2つのClobオブジェクトを比較して、等しいかどうかを調べます。2つのClobオブジェクトが同じCLOBを参照している場合、それらのオブジェクトは等しいと判断されます。2つのClobオブジェクトがNULLの場合は、等しいとは判断されません。 2つのClobオブジェクトが等しい場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool operator==( const Clob &srcClob) const;
| パラメータ | 説明 |
|---|---|
srcClob |
現行のClobオブジェクトと比較するClobオブジェクトを指定します。 |
2つのClobオブジェクトを比較して、等しくないかどうかを調べます。2つのClobオブジェクトが同じCLOBを参照している場合、それらのオブジェクトは等しいと判断されます。2つのClobオブジェクトがNULLの場合は、等しいとは判断されません。2つのClobオブジェクトが等しくない場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool operator!=( const Clob &srcClob) const;
| パラメータ | 説明 |
|---|---|
srcClob |
現行のClobオブジェクトと比較するClobオブジェクトを指定します。 |
CLOBの一部またはすべてをバッファに読み込みます。
UTF16などの固定幅キャラクタ・セットの場合は実際の文字数、UTF8などのマルチバイト・キャラクタ・セットの場合は読み取られたバイト数が戻されます。
キャラクタ・セットIDとフォームは、setCharSetId()、setCharSetIdUString()およびsetCharSetForm()のコールで明示的に設定されていない場合、デフォルトでクライアントのキャラクタ・セットIDとフォームが使用されます。
| 構文 | 説明 |
|---|---|
unsigned int read( unsigned int amt, unsigned char *buffer, unsigned int bufsize, unsigned int offset=1) const; |
CLOBの一部またはすべてをバッファに読み込みます。 |
unsigned int read( unsigned int amt, unsigned utext *buffer, unsigned int bufsize, unsigned int offset=1) const; |
グローバリゼーションが有効化された状態で、CLOBの一部またはすべてをバッファに読み込みます。このメソッドは、setCharSetId()メソッドを使用してキャラクタ・セットをOCCIUTF16に設定した後にコールする必要があります。 |
|
注意: このメソッドの2番目のバージョンでの戻り値は、固定幅キャラクタ・セット(UTF16)の場合は読み取られた文字数を表し、マルチバイト・キャラクタ・セット(UTF8など)の場合は読み取られたバイト数を表します。 |
| パラメータ | 説明 |
|---|---|
amt |
CLOBから読み取るバイト数を指定します。 |
buffer |
CLOBデータを読み取るバッファを指定します。 |
buffsize |
バッファのサイズを指定します。有効な値は、amt以上の数値です。 |
offset |
CLOBから読み取るデータの開始位置を指定します。offsetが未指定の場合、データはCLOBの最初から書き込まれます。有効な値は、1以上の数値です。 |
Clobに関連付けられたキャラクタ・セットIDを設定します。設定したキャラクタセットIDは、読込み/書込みおよびgetStream()操作で使用されます。値が明示的に設定されていない場合は、デフォルトのクライアントのキャラクタ・セットIDが使用されます。サポートされているキャラクタ・セットのリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Aを参照してください。
構文
void setCharSetId( const string &charset);
| パラメータ | 説明 |
|---|---|
charset |
Oracleは、E8DEC、ZHT16BIG5またはOCCIUTF16などのキャラクタ・セット名をサポートしています。 |
Clobに関連付けられたキャラクタ・セットIDを設定します。このIDは、環境のキャラクタ・セットがUTF16の場合に使用されます。設定したキャラクタ・セットIDは、読込み/書込みおよびgetStream()操作で使用されます。
構文
void setCharSetIdUSString( const string &charset);
| パラメータ | 説明 |
|---|---|
charset |
Oracleは、WE8DEC、ZHT16BIG5またはOCCIUTF16など、UString(UTF16キャラクタ・セット)のキャラクタ・セット名をサポートしています。 |
CLOBに関連付けられたキャラクタ・セット・フォームを設定します。設定したキャラクタ・セット・フォームは、読込み/書込みおよびgetStream()操作で使用されます。値が明示的に設定されていない場合、デフォルトではOCCI_SQLCS_IMPLICITが使用されます。
構文
void setCharSetForm( CharSetForm csfrm );
| パラメータ | 説明 |
|---|---|
csfrm |
Clobのキャラクタ・セット・フォームを指定します。 |
Clobオブジェクトを空に設定します。
| 構文 | 説明 |
|---|---|
void setEmpty(); |
Clobオブジェクトを空に設定します。 |
void setEmpty( const Connection* connectionp); |
Clobオブジェクトを空に設定し、渡されたパラメータへの接続ポインタを初期化します。 |
| パラメータ | 説明 |
|---|---|
connectionp |
Clobオブジェクトの新しい接続ポインタを指定します。 |
ClobオブジェクトをアトミックNULLに設定します。
構文
void setNull();
特定のLobOptionTypeに対してLobOptionValueを指定します。CLOBの高度な圧縮、暗号化および重複除外を有効化します。表7-1「LobOptionType型の値」および表7-2「LobOptionValue型の値」を参照してください。
CLOBが格納されたデータベース列またはパーティションに対して設定されていないオプションを設定または設定解除しようとすると、例外が発生します。暗号化されたCLOB列で暗号化をオフにしようとすると、例外が発生します。
構文
void setOptions( LobOptionType optType, LobOptionValue optValue);
| パラメータ | 説明 |
|---|---|
optType |
指定されているLobOptionTypeの設定です。これらの設定は、サーバーのラウンドトリップを避けるため、ビット単位のor(|)を使用して結合できます。 |
optValue |
optTypeパラメータで指定されたLobOptionTypeのLobOptionValue設定です。 |
CLOBを新しく指定した長さに切り捨てます。
構文
void trim( unsigned int newlen);
| パラメータ | 説明 |
|---|---|
newlen |
CLOBの新しい長さを指定します。有効な値は、CLOBの現在の長さ以下の数値です。 |
バッファのデータをCLOBに書き込みます。
このメソッドは、CLOBを暗黙的にオープンしてバッファのデータをCLOBにコピーし、CLOBを暗黙的にクローズします。CLOBがすでにオープンしている場合は、かわりにwriteChunk()を使用します。実際に書き込まれた文字数が戻ります。キャラクタ・セットIDとフォームは、setCharSetId()およびsetCharSetForm()のコールで明示的に設定されていない場合、デフォルトでクライアントのキャラクタ・セットIDとフォームが使用されます。
| 構文 | 説明 |
|---|---|
unsigned int write( unsigned int amt, unsigned char *buffer, unsigned int bufsize, unsigned int offset=1); |
バッファのデータをCLOBに書き込みます。 |
unsigned int write( unsigned int amt, utext *buffer, unsigned int bufsize, unsigned int offset=1); |
グローバリゼーションが有効化されている状態で、UTF16バッファのデータをCLOBに書き込みます。このメソッドは、setCharSetIdUString()メソッドを使用してキャラクタ・セットをOCCIUTF16に設定した後にコールする必要があります。 |
| パラメータ | 説明 |
|---|---|
amt |
amountパラメータは次の数を表します。
|
buffer |
CLOBに書き込むデータが含まれているバッファを指定します。 |
buffsize |
CLOBに書き込むデータが含まれているバッファのサイズを指定します。有効な値は、amt以上の数値です。 |
offset |
CLOBに書き込むデータの開始位置を指定します。offsetが未指定の場合、データはCLOBの最初から書き込まれます。有効な値は、1以上の数値です。 |
バッファのデータを前にオープンしたCLOBに書き込みます。
実際に書き込まれた文字数が戻ります。キャラクタ・セットIDとフォームは、setCharSetId()およびsetCharSetForm()のコールで明示的に設定されていない場合、デフォルトでクライアントのキャラクタ・セットIDとフォームが使用されます。
| 構文 | 説明 |
|---|---|
unsigned int writeChunk( unsigned int amt, unsigned char *buffer, unsigned int bufsize, unsigned int offset=1); |
バッファのデータを前にオープンしたCLOBに書き込みます。 |
unsigned int writeChunk( unsigned int amt, utext *buffer, unsigned int bufsize, unsigned int offset=1); |
グローバリゼーションが有効化されている状態で、UTF16バッファのデータをCLOBに書き込みます。このメソッドは、setCharSetIdUString()メソッドを使用してキャラクタ・セットをOCCIUTF16に設定した後にコールする必要があります。 |
| パラメータ | 説明 |
|---|---|
amt |
amountパラメータは次の数を表します。
|
buffer |
CLOBに書き込むデータが含まれているバッファを指定します。 |
buffsize |
CLOBに書き込むデータが含まれているバッファのサイズを指定します。有効な値は、amt以上の数値です。 |
offset |
CLOBに書き込むデータの開始位置を指定します。offsetが未指定の場合、データはCLOBの最初から書き込まれます。有効な値は、1以上の数値です。 |
リージョンのプライマリLOBのClobオブジェクトを取得します。
構文
Clob* getPrimary();
プライマリClob内のリージョンのオフセットを取得します。
構文
oraub8 getPrimaryOffset();
このClob内のリージョンのオフセットを取得します。
構文
oraub8 getOffset();
リージョンの長さ(文字数)を取得します。
構文
oraub8 getLength();
格納されているデータの型を取得します。
構文
string getMimeType();