ORA-22835: CLOBからCHAR、またはBLOBからRAWへの変換には、バッファーが小さすぎます。の対処法

この記事ではORA-22835の対処法について解説します。

 エラー内容

CLOB型のデータをCHAR型に変換してSELECTを実行した際にORA-22835エラーが発生しました。

SQL> SELECT TO_CHAR(ACCESS_PARAMETERS) FROM USER_EXTERNAL_TABLES;
ERROR:
ORA-22835: CLOBからCHAR、またはBLOBからRAWへの変換には、バッファーが小さすぎます(実際: 14463、最大: 4000)

これはCHAR型の最大文字数の制限が4000字であるため、4000字以上のサイズのCLOBデータをCHAR型に変換しようとすると発生します。

これを回避するにはDBMS_LOB.SUBSTRを使用して文字数を制限して変換を行う必要があります。


 対応例

DBMS_LOB.SUBSTRを使用して文字数を制限して変換を行います。

DBMS_LOB.SUBSTRの構文は以下の通りです。

DBMS_LOB.SUBSTR(<CLOB型の列名)> ,<取得文字数>, <開始位置>)

エラーが発生したSQLは以下のように変更します。

SELECT  DBMS_LOB.SUBSTR(ACCESS_PARAMETERS ,4000, 1) FROM USER_EXTERNAL_TABLES;

ACCESS_PARAMETERS列の4000文字分を出力するように変更しました。