TRIM ストアドプロシージャは、内部 LOB 値を newlen パラメータで指定された長さに調整します。
TRIM ストアドプロシージャは、BLOB に対してはバイト単位の長さを、CLOB に対しては文字単位の長さを指定します。
説明
TRIM ストアドプロシージャは、LOB の長さを newlen パラメータで指定された値に短縮します。
空の LOB に対して TRIM を実行しようとした場合、結果はなく、TRIM はエラーを返しません。newlen で新たに指定された長さが LOB のサイズを超える場合、例外が発生します。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみ提供されます。
構文
DBMS_LOB.TRIM (
lob_loc IN OUT NOCOPY BLOB,
newlen IN INTEGER);
DBMS_LOB.TRIM (
lob_loc IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
newlen IN INTEGER);
パラメータの説明
パラメータ |
説明 |
|---|---|
| lob_loc | 内部 LOB のロケーターで、その長さが調整されます。詳細については、DBMS_LOBの使用方法を参照してください。 |
| newlen | トリミング後の新しい LOB の長さ値(BLOB の場合はバイト、CLOB の場合は文字)。 |
例外状況
例外 |
説明 |
|---|---|
| VALUE_ERROR | lob_loc の値が NULL です。 |
| INVALID_ARGVAL | 次のいずれかの状況が考えられます:
|
| QUERY_WRITE | クエリまたはPDML並列実行サーバー内で LOB 書き込みを実行できません。 |
| BUFFERING_ENABLED | LOB でバッファリングが有効になっている場合、LOB バッファリングを有効にした状態で操作を実行できません。 |
使用方法
LOB操作をOpen/Closeインターフェースでラッピングすることは必須ではありません。操作実行前にLOBを開いていない場合、呼び出しの過程でLOB列上の機能インデックスとドメインインデックスが更新されます。操作実行前にLOBを開いている場合は、トランザクションをコミットする前に必ず閉じる必要があります。内部LOBを閉じる際、LOB列上の機能インデックスとドメインインデックスが更新されます。LOB操作をOpen/Close APIでラッピングしない場合、LOBに書き込むたびに機能インデックスとドメインインデックスが更新されます。パフォーマンスへの悪影響を避けるため、LOBへの書き込み操作はOPENまたはCLOSEステートメント内に含めることを推奨します。必要に応じて、指定された新しい長さが0でない限り、
TRIMはLOBの長さを変更する前にLOBを取得します。