フィールドの 1 つが LOB (ラージ オブジェクト) データ型に設定された Oracle データベースを用意します。select ステートメントを実行すると、次のエラーがスローされます。
ERROR:
ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: 10228,
maximum: 4000)
各チューブ内の文字列 (ログ) のこのサイズは、バッファーの最大容量よりも 10228 大きくなります。文字列全体を取得する必要があります。
私はこの一時的な解決策を思いつくことができました:
Select dbms_lob.substr( BLOB_FieldName, 4000, 1 )
from Database name Where [Condition];
このクエリでは、文字列の最初の 4000 バイトを取得できました。これは素晴らしいことですが、文字列全体が必要です。
そして、 utl_raw.cast_to_varchar2 について読んだ後、次のことを試しました
Select utl_raw.cast_to_varchar2( dbms_lob.substr( BLOB_fieldName, 19000, 1 ) )
from[dbname];
utl_raw.cast_to_varchar2 を使用したのは、[Varchar2] データ型が最大 32k バイトを保持できることをオンラインで読んだため、[LOB] データ型を Varchar2 にキャストすることを考えたからですが、うまくいきませんでした。
参考までに、PL/SQL の使用は制限されています。環境はlinux、rhelです。
これを行う方法についてのガイダンスが必要です。