如何在Oracle中将CLOB转换为CHAR数据类型?

时间:2017-01-08 13:59:05

标签: sql oracle

对于ETL目的,我需要将DB记录转换为平面文件。为此,我必须将所有记录转换为CHAR。在该表中,它具有少量具有CLOB数据类型的列。所以,我尝试了以下功能:

DBMS.LOBS_SUBSTR(column_name, Length(column_name))
  

错误:ORA-06502 Pl / sql:数值错误:字符串缓冲区   太小ORA-06512:在第1行   06502. 00000 - “PL / SQL:数字或值错误℅s”

1 个答案:

答案 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中的字符