DBMS_LOB パッケージは、ラージオブジェクトに対して操作を実行するために使用されます。

表 1. DBMS_LOB 関数とストアドプロシージャ
関数/ストアドプロシージャ 関数またはストアドプロシージャ 戻り値の型 説明
APPEND(dest_lob IN OUT,src_lob) ストアドプロシージャ N/A ラージオブジェクトを別のオブジェクトに追加します。
COMPARE(lob_1, lob_2 [, amount[, offset_1 [, offset_2 ]]]) 関数 INTEGER 2 つのラージオブジェクトを比較します。
CONVERTOBLOB(dest_lob IN OUT,src_clob, amount, dest_offsetIN OUT, src_offset IN OUT,blob_csid, lang_context IN OUT,warning OUT) ストアドプロシージャ N/A 文字をバイナリデータに変換します。
CONVERTTOCLOB(dest_lob IN OUT,src_blob, amount, dest_offsetIN OUT, src_offset IN OUT,blob_csid, lang_context IN OUT,warning OUT) ストアドプロシージャ N/A バイナリデータを文字に変換します。
COPY(dest_lob IN OUT, src_lob,amount [, dest_offset [,src_offset ]]) ストアドプロシージャ N/A ラージオブジェクトを別のオブジェクトにコピーします。
ERASE(lob_loc IN OUT, amount IN OUT [, offset ]) ストアドプロシージャ N/A ラージオブジェクトを消去します。
GET_STORAGE_LIMIT(lob_loc) 関数 INTEGER ラージオブジェクトのストレージ制限を取得します。
GETLENGTH(lob_loc) 関数 INTEGER ラージオブジェクトの長さを取得します。
INSTR(lob_loc, pattern [,offset [, nth ]]) 関数 INTEGER 指定されたオフセットで始まるラージオブジェクト内のパターンの位置を取得します。
READ(lob_loc, amount IN OUT,offset, buffer OUT) ストアドプロシージャ N/A ラージオブジェクトを読み取ります。
SUBSTR(lob_loc [, amount [,offset ]]) 関数 RAW または VARCHAR2 ラージオブジェクトの一部を取得します。
TRIM(lob_loc IN OUT, newlen) ストアドプロシージャ N/A ラージオブジェクトを指定した長さにトリミングします。
WRITE(lob_loc IN OUT, amount,offset, buffer) ストアドプロシージャ N/A ラージオブジェクトにデータを書き込みます。
WRITEAPPEND(lob_loc IN OUT,amount, buffer) ストアドプロシージャ N/A バッファからラージオブジェクトの最後にデータを書き込みます。

Oracle 互換の POLARDB の DBMS_SQL パッケージは、Oracle のバージョンと比較すると、部分的にのみ実装されています。 Oracle 互換の POLARDB は、上表にリストされている関数とストアドプロシージャのみをサポートしています。

下表に、パッケージで使用できるパブリック変数の一覧を示します。

表 2. DBMS_LOB パブリック変数
パブリック変数 データ型 Value
compress off INTEGER 0
compress_on INTEGER 1
deduplicate_off INTEGER 0
deduplicate_on INTEGER 4
default_csid INTEGER 0
default_lang_ctx INTEGER 0
encrypt_off INTEGER 0
encrypt_on INTEGER 1
file_readonly INTEGER 0
lobmaxsize INTEGER 1073741823
lob_readonly INTEGER 0
lob_readwrite INTEGER 1
no_warning INTEGER 0
opt_compress INTEGER 1
opt_deduplicate INTEGER 4
opt_encrypt INTEGER 2
warn_inconvertible_char INTEGER 1

以下のセクションでは、ラージオブジェクトのデータ型が BLOB の場合、オブジェクトの長さとオフセットはバイト単位で測定されます。 ラージオブジェクトのデータ型が CLOB の場合には、長さとオフセットは文字数で測定されます。

APPEND

APPEND ストアドプロシージャは、ラージオブジェクトを別のオブジェクトに追加するために使用されます。 2 つのラージオブジェクトのデータ型は同じである必要があります。

APPEND(dest_lob IN OUT { BLOB | CLOB }, src_lob { BLOB | CLOB })

パラメーター

パラメーター 説明
dest_lob 追加先のラージオブジェクトの場所を指定します。 dest_lob パラメーターのデータ型は、src_lob パラメーターのデータ型と同じである必要があります。
src_lob 追加するラージオブジェクトの場所を指定します。 src_lob パラメーターのデータ型は、dest_lob パラメーターのデータ型と同じである必要があります。

COMPARE

COMPARE ストアドプロシージャは、指定された長さ内の指定されたオフセットで、2 つのラージオブジェクトをバイト単位で比較します。 比較される 2 つのラージオブジェクトのデータ型は同じである必要があります。

status INTEGER COMPARE(lob_1 { BLOB | CLOB },
  lob_2 { BLOB | CLOB }
  [, amount INTEGER [, offset_1 INTEGER [, offset_2 INTEGER ]]])

パラメーター

パラメーター 説明
lob_1 最初のラージオブジェクトの場所を指定します。 lob_1 パラメーターのデータ型は、lob_2 パラメーターのデータ型と同じである必要があります。
lob_2 2 番目のラージオブジェクトの場所を指定します。 lob_2 パラメーターのデータ型は、lob_1 パラメーターのデータ型と同じである必要があります。
amount ラージオブジェクトのデータ型が BLOB の場合、オブジェクトは指定されたバイト数内で比較されます。 ラージオブジェクトのデータ型が CLOB の場合、オブジェクトは指定された文字数の範囲内で比較されます。 amount パラメーターのデフォルト値は、ラージオブジェクトの最大サイズです。
offset 1 比較を開始する最初のラージオブジェクト内の位置を指定します。 最初のバイトまたは文字の位置には、オフセット 1 のラベルが付いています。 デフォルト値は 1 です。
offset_2 比較を開始する 2 番目のラージオブジェクト内の位置を指定します。 最初のバイトまたは文字の位置には、オフセット 1 のラベルが付いています。 デフォルト値は 1 です。
status 比較結果を指定します。 2 つのラージオブジェクトが指定されたオフセットで指定された長さ内で同じ場合、0 (ゼロ) が返されます。 オブジェクトが同じでない場合は、ゼロ以外の値が返されます。 amount、offset_1、offset_2 パラメーターの値が 0 より小さい場合には、NULL が返されます。

CONVERTTOBLOB

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 データ型の変換先のラージオブジェクトを指定します。 CONVERTTOBLOB ストアドプロシージャを使用して、CLOB データ型のラージオブジェクトを BLOB データ型のラージオブジェクトに変換することができます。
src_clob CLOB データ型の変換元のラージオブジェクトを指定します。 CONVERTTOBLOB ストアドプロシージャを使用して、BLOB データ型のラージオブジェクトを CLOB データ型のラージオブジェクトに変換することができます。
amount src_clob パラメーターで指定されたラージオブジェクトで変換される文字数を指定します。
dest_offset IN 変換元のラージオブジェクトの書き込みを開始するターゲットのラージオブジェクト内のバイト位置を指定します。 最初のバイトにはオフセット 1 のラベルが付いています。
dest_offset OUT 書き込み操作が完了した後のターゲットのラージオブジェクト内のバイト位置を指定します。 最初のバイトにはオフセット 1 のラベルが付いています。
src_offset IN 変換が開始される変換元のラージオブジェクト内の文字の場所を指定します。 最初の文字はオフセット 1 としてラベル付けされます。
src_offset OUT 変換が完了した後の変換元のラージオブジェクト内の文字の位置を指定します。 最初の文字はオフセット 1 としてラベル付けされます。
blob_csid 変換先のラージオブジェクトの文字セット ID を指定します。
langcontext IN 変換の言語環境を指定します。 通常、デフォルト値の 0 が設定に使用されます。
langcontext OUT 変換が完了した後の言語環境を指定します。
warning 変換が成功した場合、0 が返されます。 変換が失敗した場合、1 が返されます。

CONVERTTOCLOB

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 データ型の変換先のラージオブジェクトを指定します。 CONVERTTOBLOB ストアドプロシージャを使用して、BLOB データ型のラージオブジェクトを CLOB データ型のラージオブジェクトに変換することができます。
src_blob BLOB データ型の変換元のラージオブジェクトを指定します。 CONVERTTOBLOB ストアドプロシージャを使用して、CLOB データ型のラージオブジェクトを BLOB データ型のラージオブジェクトに変換することができます。
amount src_blob パラメーターで指定されたラージオブジェクトで変換されるバイト数を指定します。
dest_offset IN 変換元のラージオブジェクトの書き込みを開始するターゲットのラージオブジェクト内の文字の位置を指定します。 最初の文字はオフセット 1 としてラベル付けされます。
dest_offset OUT 書き込み操作の完了後、CLOB データ型のターゲットのラージオブジェクト内の文字の場所を指定します。 最初の文字はオフセット 1 としてラベル付けされます。
src_offset IN 変換が開始される変換元のラージオブジェクトのバイト位置を指定します。 最初のバイトにはオフセット 1 のラベルが付いています。
src_offset OUT 変換が完了した後の変換元のラージオブジェクト内のバイト位置を指定します。 最初のバイトにはオフセット 1 のラベルが付いています。
blob_csid 変換先のラージオブジェクトの文字セット ID を指定します。
CLOB. langcontext IN 変換の言語環境を指定します。 通常、デフォルト値の 0 が設定に使用されます。
langcontext OUT 変換が完了した後の言語環境を指定します。
warning 変換が成功した場合、0 が返されます。 変換が失敗した場合、1 が返されます。

COPY

COPY ストアドプロシージャは、ラージオブジェクトを別のオブジェクトにコピーするために使用されます。 コピー元のラージオブジェクトとコピー先のラージオブジェクトのデータ型は同じである必要があります。

COPY(dest_lob IN OUT { BLOB | CLOB }, src_lob 
{ BLOB | CLOB },
  amount INTEGER
  [, dest_offset INTEGER [, src_offset INTEGER ]])

パラメーター

パラメーター 説明
dest_lob コピー元のラージオブジェクトのコピー先となるコピー先のラージオブジェクトの場所を指定します。 パラメーターのデータ型は、src_lob パラメーターで指定されたラージオブジェクトと同じである必要があります。
src_lob コピーするターゲットのラージオブジェクトの場所を指定します。 パラメーターのデータ型は、dest_lob パラメーターで指定されたラージオブジェクトと同じである必要があります。
amount src_lob パラメーターで指定されたラージオブジェクトにコピーされるバイト数または文字数を指定します。
dest_offset コピー元のラージオブジェクトの書き込みを開始するターゲットのラージオブジェクト内の場所を指定します。 最初の位置にはオフセット 1 のラベルが付いています。 デフォルト値は 1 です。
src_offset コピー操作が開始されるコピー元のラージオブジェクト内の文字の位置を指定します。 最初の場所にはオフセット 1 のラベルが付いています。 デフォルト値は 1 です。

ERASE

ERASE ストアドプロシージャは、ラージオブジェクトのデータの一部を消去するために使用されます。 BLOB データ型のラージオブジェクトの場合、指定された部分は 0 バイトのフィルターに置き換えられます。 CLOB データ型のラージオブジェクトの場合、指定された部分はスペースで置き換えられます。 この操作では、ラージオブジェクトのサイズは変更されません。

ERASE(lob_loc IN OUT { BLOB | CLOB }, amount IN OUT INTEGER
  [, offset INTEGER ])

パラメーター

パラメーター 説明
lob_loc 消去するラージオブジェクトを指定します。
amount IN ラージオブジェクトで消去するバイト数または文字数を指定します。
amount OUT 消去されたバイト数または文字数を指定します。 指定されたバイト数または文字数が消去される前にラージオブジェクトの終わりに到達した場合、出力値は入力値よりも小さくなります。
offset 消去を開始するラージオブジェクト内の場所を指定します。 最初のバイトまたは文字がオフセット 1 としてラベル付けされます。 デフォルト値は 1 です。

GET_STORAGE_LIMIT

GET_STORAGE_LIMIT 関数は、ラージオブジェクトが使用できる最大ストレージスペースを取得するために使用されます。

size INTEGER GET_STORAGE_LIMIT(lob_loc BLOB)

size INTEGER GET_STORAGE_LIMIT(lob_loc CLOB)

パラメーター

パラメーター 説明
size データベースのラージオブジェクトが使用できる最大ストレージ領域を指定します。
lob_loc このパラメーターは、Oracle データベースとの互換性を確保するために提供されており、実行時に無視することができます。

GETLENGTH

GETLENGTH 関数は、ラージオブジェクトの長さを取得するために使用されます。
amount INTEGER GETLENGTH(lob_loc BLOB)

amount INTEGER GETLENGTH(lob_loc CLOB)

パラメーター

パラメーター 説明
lob_loc ラージオブジェクトの場所を指定します。 GETLENGTH 関数を使用して、オブジェクトの長さを取得することができます。
amount ラージオブジェクトの長さを指定します。 BLOB データ型のラージオブジェクトの場合、長さはバイト単位で測定されます。 CLOB データ型のラージオブジェクトの場合、長さは文字数で測定されます。

INSTR

INSTR 関数は、ラージオブジェクト内で、指定されたパターンが指定された n 番目に出現する位置を取得するために使用されます。

position INTEGER INSTR(lob_loc { BLOB | CLOB },
  pattern { RAW | VARCHAR2 } [, offset INTEGER [, nth INTEGER ]])

パラメーター

パラメーター 説明
lob_loc INSTR 関数を使用して指定したパターンを検索できるラージオブジェクトの場所を指定します。
pattern ラージオブジェクトで照合するパターンを指定します。 パターンは、バイトまたは文字の組み合わせです。 ラージオブジェクトのデータ型が BLOB の場合、パターンのデータ型は RAW である必要があります。 ラージオブジェクトのデータ型が CLOB の場合、パターンのデータ型は VARCHAR2 ある必要があります。
offset lob_loc パラメーターで指定されたラージオブジェクト内のパターンの検索を開始する位置を指定します。 最初のバイトまたは文字がオフセット 1 としてラベル付けされます。 デフォルト値は 1 です。
nth 指定されたオフセットからパターンが出現する n 番目の回数を指定します。 デフォルト値は 1 です。
position ラージオブジェクト内で、指定した n 回目にパターンが表示される位置を指定します。 指定したオフセットから検索が開始されます。

READ

READ ストアドプロシージャは、ラージオブジェクトの一部をバッファに読み込むために使用されます。
READ(lob_loc { BLOB | CLOB }, amount IN OUT BINARY_INTEGER,
  offset INTEGER, buffer OUT { RAW | VARCHAR2 })

パラメーター

パラメーター 説明
lob_loc 読み取るラージオブジェクトの場所を指定します。
amount IN 読み取るバイトまたは文字の総数を指定します。
amount OUT 読み取られたバイトまたは文字の総数を指定します。 読み取るデータがなくなると、0 が返され、DATA_NOT_FOUND 例外がスローされます。
offset ラージオブジェクト内で読み取り操作を開始する場所を指定します。 最初のバイトまたは文字がオフセット 1 としてラベル付けされます。
buffer ラージオブジェクトの一部を受け取る変数を指定します。 lob_loc パラメーターのデータ型が BLOB の場合、バッファパラメーターのデータ型は RAW である必要があります。 lob_loc パラメーターのデータ型が CLOB の場合、バッファパラメーターのデータ型は VARCHAR2 である必要があります。

SUBSTR

SUBSTR 関数は、ラージオブジェクトの一部を取得するために使用されます。
data { RAW | VARCHAR2 } SUBSTR(lob_loc { BLOB | CLOB }
  [, amount INTEGER [, offset INTEGER ]])

パラメーター

パラメーター 説明
lob_loc 読み取るラージオブジェクトの場所を指定します。
amount 返されるバイト数または文字数を指定します。 デフォルト値は 32,767 です。
offset 読み取りを開始するラージオブジェクト内の位置を指定します。 最初のバイトまたは文字がオフセット 1 としてラベル付けされます。 デフォルト値は 1 です。
data ラージオブジェクトの取得された部分を指定します。 lob_loc パラメーターのデータ型が BLOB の場合、バッファパラメーターのデータ型は RAW である必要があります。 lob_loc パラメーターのデータ型が CLOB の場合、データパラメーターのデータ型は VARCHAR2 である必要があります。

TRIM

TRIM ストアドプロシージャは、ラージオブジェクトを指定した長さにトリミングするために使用されます。

TRIM(lob_loc IN OUT { BLOB | CLOB }, newlen INTEGER)

パラメーター

パラメーター 説明
lob_loc トリミングするラージオブジェクトの場所を指定します。
newlen トリミングするラージオブジェクトの合計バイト数または文字数を指定します。

WRITE

WRITE ストアドプロシージャは、ラージオブジェクトにデータを書き込むために使用されます。 ラージオブジェクト内の指定されたオフセット内の指定された長さ内のデータは、バッファ内のデータによって上書きされます。

WRITE(lob_loc IN OUT { BLOB | CLOB },
  amount BINARY_INTEGER,
  offset INTEGER, buffer { RAW | VARCHAR2 })

パラメーター

パラメーター 説明
lob_loc 書き込むラージオブジェクトの場所を指定します。
amount ラージオブジェクトに書き込むバッファ内のバイト数または文字数を指定します。
offset 書き込み操作を開始するラージオブジェクト内のバイトまたは文字の位置を指定します。 オフセットの値は 1 から始まります。
buffer ラージオブジェクトに書き込むバッファ内のデータを指定します。 lob_loc パラメーターのデータ型が BLOB の場合、バッファパラメーターのデータ型は RAW である必要があります。 lob_loc パラメーターのデータ型が CLOB の場合、バッファパラメーターのデータ型は VARCHAR2 である必要があります。

WRITEAPPEND

WRITEAPPEND ストアドプロシージャは、ラージオブジェクトの最後にデータを追加するために使用されます。

WRITEAPPEND(lob_loc IN OUT { BLOB | CLOB },
  amount BINARY_INTEGER, buffer { RAW | VARCHAR2 })

パラメーター

パラメーター 説明
lob_loc データが追加されるラージオブジェクトの場所を指定します。
amount ラージオブジェクトの最後に追加するバッファのバイト数または文字数を指定します。
buffer ラージオブジェクトに追加するデータを指定します。 lob_loc パラメーターのデータ型が BLOB の場合、バッファパラメーターのデータ型は RAW である必要があります。 lob_loc パラメーターのデータ型が CLOB の場合、バッファパラメーターのデータ型は VARCHAR2 である必要があります。