DBMS_LOB パッケージは、ラージオブジェクト(LOB)を操作するためのサブプログラムを提供します。
BLOB 値の場合、すべての長さおよびオフセット値はバイト単位で測定されます。CLOB 値の場合は、文字単位で測定されます。
注意事項
すべての DBMS_LOB サブプログラムは LOB ロケータを使用して動作します。入力ロケータは、すでにデータベース内に存在する LOB を表している必要があります。
書き込み操作ごとに機能インデックスおよびドメインインデックスが更新されるのを回避し、パフォーマンスへの大きな影響を防ぐため、書き込み操作は OPEN/CLOSE 呼び出しで囲んでください。
サブプログラム
| サブプログラム | タイプ | 戻り値の型 | 説明 |
|---|---|---|---|
| APPEND(dest_lob IN OUT, src_lob) | ストアドプロシージャ | N/A | LOB を別の LOB に追加します |
| COMPARE(lob_1, lob_2 [, amount [, offset_1 [, offset_2 ]]]) | 関数 | INTEGER | 指定されたオフセットから指定された長さの範囲で、2 つの LOB をバイト単位で比較します |
| CONVERTTOBLOB(dest_lob IN OUT, src_clob, amount, dest_offset IN OUT, src_offset IN OUT, blob_csid, lang_context IN OUT, warning OUT) | ストアドプロシージャ | N/A | CLOB を BLOB に変換します |
| CONVERTTOCLOB(dest_lob IN OUT, src_blob, amount, dest_offset IN OUT, src_offset IN OUT, blob_csid, lang_context IN OUT, warning OUT) | ストアドプロシージャ | N/A | BLOB を CLOB に変換します |
| COPY(dest_lob IN OUT, src_lob, amount [, dest_offset [, src_offset ]]) | ストアドプロシージャ | N/A | LOB を別の LOB にコピーします |
| ERASE(lob_loc IN OUT, amount IN OUT [, offset ]) | ストアドプロシージャ | N/A | LOB の一部を消去します |
| GET_STORAGE_LIMIT(lob_loc) | 関数 | INTEGER | LOB に利用可能な最大ストレージ容量を返します |
| GETLENGTH(lob_loc) | 関数 | INTEGER | LOB の長さを返します |
| INSTR(lob_loc, pattern [, offset [, nth ]]) | 関数 | INTEGER | LOB 内でパターンが n 回目に出現する位置を返します |
| READ(lob_loc, amount IN OUT, offset, buffer OUT) | ストアドプロシージャ | N/A | LOB の一部をバッファーに読み取ります |
| SUBSTR(lob_loc [, amount [, offset ]]) | 関数 | RAW または VARCHAR2 | LOB の一部を返します |
| TRIM(lob_loc IN OUT, newlen) | ストアドプロシージャ | N/A | LOB を指定された長さにトリミングします |
| WRITE(lob_loc IN OUT, amount, offset, buffer) | ストアドプロシージャ | N/A | LOB にデータを書き込み、既存の内容を上書きします |
| WRITEAPPEND(lob_loc IN OUT, amount, buffer) | ストアドプロシージャ | N/A | バッファーデータを LOB の末尾に追加します |
パブリック変数
| 変数 | データ型 | 値 | 説明 |
|---|---|---|---|
| compress_off | INTEGER | 0 | LOB 圧縮を無効化します |
| compress_on | INTEGER | 1 | LOB 圧縮を有効化します |
| deduplicate_off | INTEGER | 0 | LOB 重複排除を無効化します |
| deduplicate_on | INTEGER | 4 | LOB 重複排除を有効化します |
| default_csid | INTEGER | 0 | デフォルト文字セット ID |
| default_lang_ctx | INTEGER | 0 | デフォルト言語コンテキスト |
| encrypt_off | INTEGER | 0 | LOB 暗号化を無効化します |
| encrypt_on | INTEGER | 1 | LOB 暗号化を有効化します |
| file_readonly | INTEGER | 0 | BFILE を読み取り専用モードで開きます |
| lobmaxsize | INTEGER | 1073741823 | LOB の最大サイズ |
| lob_readonly | INTEGER | 0 | LOB を読み取り専用モードで開きます |
| lob_readwrite | INTEGER | 1 | LOB を読み取り/書き込みモードで開きます |
| no_warning | INTEGER | 0 | 警告を発行しません |
| opt_compress | INTEGER | 1 | SecureFile LOB 作成時に圧縮を使用します |
| opt_deduplicate | INTEGER | 4 | SecureFile LOB 作成時に重複排除を使用します |
| opt_encrypt | INTEGER | 2 | SecureFile LOB 作成時に暗号化を使用します |
| warn_inconvertible_char | INTEGER | 1 | 文字を変換できない場合に警告を発行します |
APPEND
src_lob を dest_lob の末尾に追加します。両方の LOB は同じデータの型である必要があります。
APPEND(dest_lob IN OUT { BLOB | CLOB }, src_lob { BLOB | CLOB })パラメーター
| パラメーター | 説明 |
|---|---|
| dest_lob | 対象の LOB。src_lob と同じデータの型である必要があります。 |
| src_lob | 追加するソース LOB。dest_lob と同じデータの型である必要があります。 |
COMPARE
指定されたオフセットから指定された長さの範囲で、2 つの LOB を比較します。両方の LOB は同じデータの型である必要があります。
status INTEGER COMPARE(lob_1 { BLOB | CLOB },
lob_2 { BLOB | CLOB }
[, amount INTEGER [, offset_1 INTEGER [, offset_2 INTEGER ]]])パラメーター
| パラメーター | 説明 |
|---|---|
| lob_1 | 最初の LOB。lob_2 と同じデータの型である必要があります。 |
| lob_2 | 2 番目の LOB。lob_1 と同じデータの型である必要があります。 |
| amount | 比較するバイト数(BLOB)または文字数(CLOB)。デフォルト:LOB の最大サイズ。 |
| offset_1 | lob_1 内で比較を開始する位置。デフォルト:1。 |
| offset_2 | lob_2 内で比較を開始する位置。デフォルト:1。 |
| status | 比較結果:0 は指定範囲内で LOB が一致した場合、非ゼロ値は LOB が異なる場合、NULL は amount、offset_1、または offset_2 が 0 未満の場合です。 |
CONVERTTOBLOB
CLOB を BLOB に変換します。
CONVERTTOBLOB(dest_lob IN OUT BLOB, src_clob CLOB,
amount INTEGER, dest_offset IN OUT INTEGER,
src_offset IN OUT INTEGER, blob_csid NUMBER,
lang_context IN OUT INTEGER, warning OUT INTEGER)パラメーター
| パラメーター | 説明 |
|---|---|
| dest_lob | 対象の BLOB。 |
| src_clob | ソースの CLOB。 |
| amount | src_clob から変換する文字数。 |
| dest_offset IN | dest_lob 内で書き込みを開始するバイト位置。 |
| dest_offset OUT | 書き込み完了後の dest_lob 内のバイト位置。 |
| src_offset IN | src_clob 内で変換を開始する文字位置。 |
| src_offset OUT | 変換完了後の src_clob 内の文字位置。 |
| blob_csid | 対象 BLOB の文字セット ID。 |
| lang_context IN | 変換時の言語コンテキスト。ほとんどの場合、デフォルト値 0 を使用します。 |
| lang_context OUT | 変換完了後の言語コンテキスト。 |
| warning | 0、失敗した場合は 1。 |
CONVERTTOCLOB
BLOB を CLOB に変換します。
CONVERTTOCLOB(dest_lob IN OUT CLOB, src_blob BLOB,
amount INTEGER, dest_offset IN OUT INTEGER,
src_offset IN OUT INTEGER, blob_csid NUMBER,
lang_context IN OUT INTEGER, warning OUT INTEGER)パラメーター
| パラメーター | 説明 |
|---|---|
| dest_lob | 対象の CLOB。 |
| src_blob | ソースの BLOB。 |
| amount | src_blob から変換するバイト数。 |
| dest_offset IN | dest_lob 内で書き込みを開始する文字位置。 |
| dest_offset OUT | 書き込み完了後の dest_lob 内の文字位置。 |
| src_offset IN | src_blob 内で変換を開始するバイト位置。 |
| src_offset OUT | 変換完了後の src_blob 内のバイト位置。 |
| blob_csid | 対象 CLOB の文字セット ID。 |
| lang_context IN | 変換時の言語コンテキスト。ほとんどの場合、デフォルト値 0 を使用します。 |
| lang_context OUT | 変換完了後の言語コンテキスト。 |
| warning | 0、失敗した場合は 1。 |
COPY
src_lob から amount バイトまたは文字を dest_lob にコピーします。両方の LOB は同じデータの型である必要があります。
COPY(dest_lob IN OUT { BLOB | CLOB }, src_lob { BLOB | CLOB },
amount INTEGER
[, dest_offset INTEGER [, src_offset INTEGER ]])パラメーター
| パラメーター | 説明 |
|---|---|
| dest_lob | 対象の LOB。src_lob と同じデータの型である必要があります。 |
| src_lob | コピー元の LOB。dest_lob と同じデータの型である必要があります。 |
| amount | src_lob からコピーするバイト数または文字数。 |
| dest_offset | dest_lob 内で書き込みを開始する位置。デフォルト:1。 |
| src_offset | src_lob 内でコピーを開始する位置。デフォルト:1。 |
ERASE
LOB の一部を消去します。BLOB の場合は消去された部分がゼロバイトで置き換えられ、CLOB の場合はスペースで置き換えられます。LOB のサイズは変わりません。
ERASE(lob_loc IN OUT { BLOB | CLOB }, amount IN OUT INTEGER
[, offset INTEGER ])パラメーター
| パラメーター | 説明 |
|---|---|
| lob_loc | 消去する LOB。 |
| amount IN | 消去するバイト数または文字数。 |
| amount OUT | 実際に消去されたバイト数または文字数。LOB の末尾に到達して amount 分を消去する前に終了した場合、この値は入力された amount より小さくなります。 |
| offset | LOB 内で消去を開始する位置。デフォルト:1。 |
GET_STORAGE_LIMIT
データベース内の LOB に利用可能な最大ストレージ容量を返します。
size INTEGER GET_STORAGE_LIMIT(lob_loc BLOB)
size INTEGER GET_STORAGE_LIMIT(lob_loc CLOB)パラメーター
| パラメーター | 説明 |
|---|---|
| lob_loc | Oracle Database との互換性のために提供されています。ランタイムでは無視されます。 |
| size | データベース内の LOB に利用可能な最大ストレージ容量。 |
GETLENGTH
LOB の長さを返します。
amount INTEGER GETLENGTH(lob_loc BLOB)
amount INTEGER GETLENGTH(lob_loc CLOB)パラメーター
| パラメーター | 説明 |
|---|---|
| lob_loc | 測定する LOB。 |
| amount | LOB の長さ:BLOB の場合はバイト単位、CLOB の場合は文字単位。 |
INSTR
指定されたオフセットから検索を開始し、LOB 内で pattern が n 回目に出現する位置を返します。
position INTEGER INSTR(lob_loc { BLOB | CLOB },
pattern { RAW | VARCHAR2 } [, offset INTEGER [, nth INTEGER ]])パラメーター
| パラメーター | 説明 |
|---|---|
| lob_loc | 検索対象の LOB。 |
| pattern | 検索するパターン。BLOB の場合は RAW、CLOB の場合は VARCHAR2 を使用します。 |
| offset | 検索を開始する位置。先頭のバイトまたは文字はオフセット 1 です。デフォルト:1。 |
| nth | offset からの出現回数。デフォルト:1。 |
| position | LOB 先頭からの pattern の n 回目の出現位置。 |
READ
LOB からデータをバッファーに読み取ります。
READ(lob_loc { BLOB | CLOB }, amount IN OUT BINARY_INTEGER,
offset INTEGER, buffer OUT { RAW | VARCHAR2 })パラメーター
| パラメーター | 説明 |
|---|---|
| lob_loc | 読み取る LOB。 |
| amount IN | 読み取るバイト数または文字数。 |
| amount OUT | 実際に読み取られたバイト数または文字数。これ以上データが利用できない場合、amount は 0 に設定され、DATA_NOT_FOUND 例外が発生します。 |
| offset | LOB 内で読み取りを開始する位置。先頭のバイトまたは文字はオフセット 1 です。 |
| buffer | データを受信する変数。BLOB の場合は RAW、CLOB の場合は VARCHAR2 を使用します。 |
SUBSTR
LOB の一部を返します。
data { RAW | VARCHAR2 } SUBSTR(lob_loc { BLOB | CLOB }
[, amount INTEGER [, offset INTEGER ]])パラメーター
| パラメーター | 説明 |
|---|---|
| lob_loc | 読み取る LOB。 |
| amount | 返すバイト数または文字数。デフォルト:32,767。 |
| offset | LOB 内で読み取りを開始する位置。先頭のバイトまたは文字はオフセット 1 です。デフォルト:1。 |
| data | 返されるデータ。BLOB の場合は RAW 型、CLOB の場合は VARCHAR2 型です。 |
TRIM
LOB を指定された長さにトリミングします。
TRIM(lob_loc IN OUT { BLOB | CLOB }, newlen INTEGER)パラメーター
| パラメーター | 説明 |
|---|---|
| lob_loc | トリミングする LOB。 |
| newlen | ターゲット長(BLOB の場合はバイト単位、CLOB の場合は文字単位)。 |
WRITE
amount バイトまたは文字分のデータをバッファーから LOB に書き込み、offset 以降の既存の内容を上書きします。
WRITE(lob_loc IN OUT { BLOB | CLOB },
amount BINARY_INTEGER,
offset INTEGER, buffer { RAW | VARCHAR2 })パラメーター
| パラメーター | 説明 |
|---|---|
| lob_loc | 書き込む LOB。 |
| amount | buffer から書き込むバイト数または文字数。 |
| offset | LOB 内で書き込みを開始する位置。 |
| buffer | 書き込むデータ。BLOB の場合は RAW、CLOB の場合は VARCHAR2 を使用します。 |
WRITEAPPEND
バッファーデータを LOB の末尾に追加します。
WRITEAPPEND(lob_loc IN OUT { BLOB | CLOB },
amount BINARY_INTEGER, buffer { RAW | VARCHAR2 })パラメーター
| パラメーター | 説明 |
|---|---|
| lob_loc | 追加先の LOB。 |
| amount | buffer から追加するバイト数または文字数。 |
| buffer | 追加するデータ。BLOB の場合は RAW、CLOB の場合は VARCHAR2 を使用します。 |