对于ETL目的,我需要将DB记录转换为平面文件。为此,我必须将所有记录转换为CHAR。在该表中,它具有少量具有CLOB数据类型的列。所以,我尝试了以下功能:
DBMS.LOBS_SUBSTR(column_name, Length(column_name))
错误:ORA-06502 Pl / sql:数值错误:字符串缓冲区 太小ORA-06512:在第1行 06502. 00000 - “PL / SQL:数字或值错误℅s”
答案 0 :(得分:0)
您可以使用DBMS_LOB.substr()
select DBMS_LOB.substr(col, 4000) from table;
此外,从docs开始,限制如下:
对于固定宽度的n字节CLOB,如果SUBSTR的输入量是 大于(32767 / n),则SUBSTR返回一个字符缓冲区 长度(32767 / n),或CLOB的长度,以较小者为准。对于 变宽字符集中的CLOB,n是最大字节宽度 用于CLOB中的字符