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