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 の末尾に書き込みます。 |