13.9 Clobクラス
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オブジェクトを割り当てます。
関連項目:
-
LOBの詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』の該当する章を参照してください。
表13-10 Clobメソッドの概要
| メソッド | 概要 |
|---|---|
|
|
|
|
|
|
|
前にオープンした |
|
|
現行の |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
指定した |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
現行の |
|
|
|
|
|
|
|
|
2つの |
|
|
2つの |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
特定の |
|
|
|
|
|
バッファをオープンされていない |
|
|
バッファをオープンしている |
13.9.1 Clob()
Clobクラスのコンストラクタです。
| 構文 | 説明 |
|---|---|
Clob(); |
|
Clob( const Connection *connectionp); |
未初期化の |
Clob( const Clob *srcClob); |
|
| パラメータ | 説明 |
|---|---|
connectionp |
接続ポインタを指定します。 |
srcClob |
コピー元の |
13.9.2 append()
CLOBを現行のCLOBの最後に追加します。
構文
void append( const Clob &srcClob);
| パラメータ | 説明 |
|---|---|
srcClob |
現行の |
13.9.4 closeStream()
CLOBから取得したStreamオブジェクトをクローズします。
構文
void closeStream( Stream *stream);
| パラメータ | 説明 |
|---|---|
stream |
クローズするStreamオブジェクトを指定します。 |
13.9.5 copy()
BFILEまたはCLOBの一部またはすべてを現行のCLOBにコピーします。
OCCIは、BfileからClobにデータをロードする際にキャラクタセット変換を実行しません。そのため、Bfileの内容がサーバーのClob記憶域キャラクタセット内の文字データであることを確認してください。
| 構文 | 説明 |
|---|---|
void copy( const Bfile &srcBfile, unsigned int numBytes, unsigned int dstOffset = 1, unsigned int srcOffset = 1); |
|
void copy( const Clob &srcClob, unsigned int numBytes, unsigned int dstOffset = 1, unsigned int srcOffset = 1); |
コピー先の |
| パラメータ | 説明 |
|---|---|
srcBfile |
データのコピー元の |
srcClob |
データのコピー元の |
numBytes |
ソース |
dstOffset |
データの開始位置は0 (ゼロ)です。 現行の |
srcOffset |
ソース |
13.9.8 getCharSetIdUString()
Clobで使用される文字セットの名前のUStringバージョンを取得します。
構文
UString getCharSetIdUString() const;
13.9.10 getContentType()
Clobのコンテンツ・タイプを戻します。コンテンツ・タイプが割り当てられていない場合は、NULL文字列を戻します。
構文
string getContentType();
13.9.12 getStream()
CLOBからStreamオブジェクトを戻します。ストリームがオープンしている場合、別のストリームをCLOBオブジェクトでオープンすることはできません。したがって、ユーザーは、Clobオブジェクト操作を実行する前に、ストリームを常にクローズする必要があります。文字セットIDとフォームは、setCharSetId()およびsetEmpty()のコールで明示的に設定されていない場合、デフォルトでクライアントの文字セットIDとフォームが使用されます。
構文
Stream* getStream( unsigned int offset = 1, unsigned int amount = 0);
| パラメータ | 説明 |
|---|---|
offset |
|
amount |
連続して読み取る文字数の合計を指定します。 |
13.9.13 isInitialized()
Clobオブジェクトが初期化されているかどうかを確認します。Clobオブジェクトが初期化されている場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool isInitialized() const;
13.9.14 isNull()
ClobオブジェクトがアトミックNULLかどうかをテストします。ClobオブジェクトがアトミックNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool isNull() const;
13.9.15 isOpen()
CLOBがオープンしているかどうかを確認します。CLOBがオープンしている場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool isOpen() const;
13.9.17 open()
CLOBを読取り/書込みまたは読取り専用モードでオープンします。
構文
void open( LObOpenMode mode = OCCI_LOB_READWRITE);
| パラメータ | 説明 |
|---|---|
mode |
|
13.9.18 operator=()
現行のCLOBにCLOBを割り当てます。割当て元CLOBは、割当て先CLOBが表に格納されているときにのみ、その割当て先CLOBにコピーされます。
構文
Clob& operator=( const Clob &srcClob);
| パラメータ | 説明 |
|---|---|
srcClob |
データのコピー元の |
13.9.19 operator==()
2つのClobオブジェクトを比較して、等しいかどうかを調べます。2つのClobオブジェクトが同じCLOBを参照している場合、それらのオブジェクトは等しいと判断されます。2つのClobオブジェクトがNULLの場合は、等しいとは判断されません。Blobオブジェクトが等しい場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool operator==( const Clob &srcClob) const;
| パラメータ | 説明 |
|---|---|
srcClob |
現行の |
13.9.20 operator!=()
2つのClobオブジェクトを比較して、等しくないかどうかを調べます。2つのClobオブジェクトが同じCLOBを参照している場合、それらのオブジェクトは等しいと判断されます。2つのClobオブジェクトがNULLの場合は、等しいとは判断されません。2つのClobオブジェクトが等しくない場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool operator!=( const Clob &srcClob) const;
| パラメータ | 説明 |
|---|---|
srcClob |
現行の |
13.9.21 read()
CLOBの一部またはすべてをバッファに読み取ります。
UTF16などの固定幅文字セットの場合は実際の文字数、UTF8などのマルチバイト文字セットの場合は読み取られたバイト数が戻されます。
文字セットIDとフォームは、setCharSetId()、setCharSetIdUString()およびsetCharSetForm()のコールで明示的に設定されていない場合、デフォルトでクライアントの文字セットIDとフォームが使用されます。
このメソッドの2番目のバージョンでの戻り値は、固定幅文字セット(UTF16)の場合は読み取られた文字数を表し、マルチバイト文字セット(UTF8など)の場合は読み取られたバイト数を表します。
| 構文 | 説明 |
|---|---|
unsigned int read( unsigned int amt, unsigned char *buffer, unsigned int bufsize, unsigned int offset=1) const; |
|
unsigned int read( unsigned int amt, unsigned utext *buffer, unsigned int bufsize, unsigned int offset=1) const; |
グローバリゼーションが有効化された状態で、 |
| パラメータ | 説明 |
|---|---|
amt |
|
buffer |
|
buffsize |
バッファのサイズを指定します。有効な値は、 |
offset |
|
13.9.22 setCharSetId()
Clobに関連付けられた文字セットIDを設定します。設定したキャラクタセットIDは、読取り/書込みおよびgetStream()操作で使用されます。値が明示的に設定されていない場合は、デフォルトのクライアントの文字セットIDが使用されます。サポートされている文字セットのリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Aを参照してください。
構文
void setCharSetId( const string &charset);
| パラメータ | 説明 |
|---|---|
charset |
Oracleは、 |
13.9.23 setCharSetIdUString()
Clobに関連付けられたキャラクタセットIDを設定します。このIDは、環境のキャラクタセットがUTF16の場合に使用されます。設定したcharsetIDは、読取り/書込みおよびgetStream()操作で使用されます。
構文
void setCharSetIdUSString( const string &charset);
| パラメータ | 説明 |
|---|---|
charset |
Oracleは、 |
13.9.24 setCharSetForm()
CLOBに関連付けられた文字セット・フォームを設定します。設定した文字セット・フォームは、読取り/書込みおよびgetStream()操作で使用されます。値が明示的に設定されていない場合、デフォルトではOCCI_SQLCS_IMPLICITが使用されます。
構文
void setCharSetForm( CharSetForm csfrm );
| パラメータ | 説明 |
|---|---|
csfrm |
|
13.9.25 setContentType()
Clobのコンテンツ・タイプを設定します。ClobがSecureFileでない場合は、例外が発生します。
構文
void setContentType( const string contenttype);
| パラメータ | 説明 |
|---|---|
contenttype |
|
13.9.26 setEmpty()
Clobオブジェクトを空に設定します。
| 構文 | 説明 |
|---|---|
void setEmpty(); |
|
void setEmpty( const Connection* connectionp); |
|
| パラメータ | 説明 |
|---|---|
connectionp |
|
13.9.28 setOptions()
特定のLobOptionTypeに対してLobOptionValueを指定します。CLOBの高度な圧縮、暗号化および重複除外を有効化します。表7-1と表7-2を参照してください。
CLOBが格納されたデータベース列またはパーティションに対して設定されていないオプションを設定または設定解除しようとすると、例外が発生します。
暗号化されたCLOB列で暗号化をオフにしようとすると、例外が発生します。
構文
void setOptions( LobOptionType optType, LobOptionValue optValue);
| パラメータ | 説明 |
|---|---|
optType |
指定されている |
optValue |
|
13.9.29 trim()
CLOBを新しく指定した長さに切り捨てます。
構文
void trim( unsigned int newlen);
| パラメータ | 説明 |
|---|---|
newlen |
|
13.9.30 write()
バッファのデータを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); |
バッファのデータを |
unsigned int write( unsigned int amt, utext *buffer, unsigned int bufsize, unsigned int offset=1); |
グローバリゼーションが有効化されている状態で、UTF16バッファのデータを |
| パラメータ | 説明 |
|---|---|
amt |
amountパラメータは次の数を表します。
|
buffer |
|
buffsize |
|
offset |
|
13.9.31 writeChunk()
バッファのデータを前にオープンしたCLOBに書き込みます。実際の文字数を戻します。文字セットIDとフォームは、setCharSetId()およびsetCharSetForm()のコールで明示的に設定されていない場合、デフォルトでクライアントの文字セットIDとフォームが使用されます。
| 構文 | 説明 |
|---|---|
unsigned int writeChunk( unsigned int amt, unsigned char *buffer, unsigned int bufsize, unsigned int offset=1); |
バッファのデータを前にオープンした |
unsigned int writeChunk( unsigned int amt, utext *buffer, unsigned int bufsize, unsigned int offset=1); |
グローバリゼーションが有効化されている状態で、UTF16バッファのデータを |
| パラメータ | 説明 |
|---|---|
amt |
amtパラメータは、固定幅キャラクタセット(UTF16)の場合は書き込まれた文字数、マルチバイト・キャラクタセット(UTF8など)の場合は書き込まれたバイト数を表します。 |
buffer |
|
buffsize |
|
offset |
|