READ ステートメントは、LOB で始まる指定されたオフセットからデータを読み取り、buffer パラメータに返すために使用されます。
amountパラメータには、実際に読み取られたバイト数または文字数が返されます。入力されたオフセットが LOB の末尾を超える場合、amount は0に設定され、NO_DATA_FOUND例外が発生します。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
構文
DBMS_LOB.READ (
lob_loc IN BLOB,
amount IN OUT NOCOPY INTEGER,
offset IN INTEGER,
buffer OUT RAW);
DBMS_LOB.READ (
lob_loc IN CLOB CHARACTER SET ANY_CS,
amount IN OUT NOCOPY INTEGER,
offset IN INTEGER,
buffer OUT VARCHAR2 CHARACTER SET ANY_CS);
パラメータの説明
| パラメータ | 説明 |
|---|---|
| lob_loc | 読み取る LOB のロケーター。詳細については、DBMS_LOB使用方法を参照してください。 |
| file_loc | チェックする LOB のファイルロケーター。 |
| amount | 読み取るバイト数(BLOBの場合)または文字数(CLOBの場合)、または既に読み取られた数。 |
| offset | LOB の読み取り開始オフセット。 |
| buffer | 読み取り操作の出力バッファー。 |
異常時の動作
| 例外 | 説明 |
|---|---|
| VALUE_ERROR | lob_loc、mount、または offset のいずれかのパラメータが NULL です。 |
| INVALID_ARGVAL | 次のような場合が考えられます:
|
| NO_DATA_FOUND | LOB の最後の位置に到達し、LOB から読み取るバイトまたは文字がなくなったため、amount の値が0になります。 |
使用方法
VARCHAR2バッファの形式は、CLOBパラメータの形式と一致していなければなりません。言い換えれば、入力されるLOBパラメータのタイプがCLOBの場合、バッファにはCHARデータを含める必要があります。クライアントから
DBMS_LOB.READを呼び出すと、返されるバッファの値にはクライアント文字セットのデータが含まれます。バッファの値をユーザーに返す前に、データベースはサーバーの文字セットからLOB値をクライアントの文字セットに変換します。必要に応じて、
READによって読み取り前にLOBを取得させることができます。