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
の場合に使用されます。設定したcharset
IDは、読取り/書込みおよび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 |
|