DBMS_LOBシステムパッケージは、BLOBおよびCLOBを読み取り、変更するために使用され、ほとんどのLOB操作を提供します。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
DBMS_LOB権限の説明
このシステムパッケージは、SYS データベース内に作成する必要があります。ただし、このシステムパッケージで提供される操作は、SYS データベースではなく、現在呼び出しているユーザーの権限で実行されます。
匿名PLブロックから呼び出されるすべての DBMS_LOB サブルーチンは、現在のユーザー権限を使用して実行されます。ストアドサブルーチンから呼び出されるすべての DBMS_LOB サブルーチンは、ストアドサブルーチンの所有者の権限を使用して実行されます。
サブルーチンを作成する際、ユーザーは AUTHID を設定して、定義者の権限と呼び出し者の権限のどちらを使用するかを指定できます。以下の例を参照してください:
CREATE PROCEDURE proc1 AUTHID DEFINER ...
または
CREATE PROCEDURE proc1 AUTHID CURRENT_USER ...
DBMS_LOBで使用されるデータ型
| データ型 | 説明 |
|---|---|
| BLOB | ソースまたはターゲットのバイナリ LOB。 |
| RAW | ソースまたはターゲットの RAW バッファー(BLOB と一緒に使用)。 |
| CLOB | ソースまたはターゲットの文字列 LOB。 |
| VARCHAR2 | ソースまたはターゲットの文字列バッファー(CLOB と一緒に使用)。 |
| INTEGER | 指定されたバッファーまたは LOB のサイズ、LOB のオフセット、またはアクセスする数。 |
DBMS_LOBの使用方法
すべての DBMS_LOB サブルーチンは、LOB ロケーターに基づいて動作します。DBMS_LOB サブルーチンの操作を正常に完了するためには、データベースのテーブル領域または外部ファイルシステムに既に存在する LOB を表す入力ロケーターを提供する必要があります。
すべての DBMS_LOB APIは、リモート LOB ロケーターに対する操作をサポートします。2つのロケーターを使用するAPIは、2つの LOB を同一のデータベース内に配置する必要があります。
DBMS_LOBサブルーチンの概要
以下の表は、OceanBaseデータベースの現行バージョンでサポートされているDBMS_LOBサブルーチンとその簡潔な説明を示しています。
| サブルーチン | 説明 |
|---|---|
| APPEND | ソース LOB の内容をターゲット LOB に追加します。 |
| CLOSE | 以前に開いた内部または外部の LOB を閉じます。 |
| COPY | ソース内部 LOB の全部または一部をターゲット内部 LOB にコピーします。 |
| CREATETEMPORARY | デフォルトの一時テーブルスペースに一時 BLOB または CLOB および対応するインデックスを作成します。 |
| ERASE | 全部または一部の LOB を消去します。 |
| FREETEMPORARY | デフォルトの一時テーブルスペース内の一時 BLOB または CLOB を解放します。 |
| GETLENGTH | LOB 値の長さを取得します。 |
| ISOPEN | 入力ロケーターを使用して LOB が既に開かれているかどうかを確認します。 |
| INSTR | LOB モードで n 番目にマッチした位置を返します。 |
| ISTEMPORARY | ロケーターが一時LOBを指しているかどうかを確認します。 |
| OPEN | 指定されたモードで LOB (内部、外部、または一時) を開きます。 |
| READ | 指定されたオフセットから LOB のデータを読み取ります。 |
| SUBSTR | 指定されたオフセットから一部の LOB 値を返します。 |
| TRIM | LOB 値を指定された短い長さにトリムします。 |
| WRITE | 指定されたオフセットからデータを LOB に書き込みます。 |
| WRITEAPPEND | バッファを LOB の末尾に書き込みます。 |