如何可视化CLOB内容 - Oracle

时间:2015-07-21 14:24:25

标签: sql oracle select clob ora-00997

我想选择并可视化具有CLOB数据类型(> 100字节)的列的内容。

select UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(ds_cirurgia,1,4000))
  from AVISO_CIRURGIA
 where cd_paciente = 123456789;

但是我收到了这个错误:

[SELECT - 0 row(s), 0.000 secs]  [Error Code: 997, SQL State: 42000]  ORA-00997: illegal use of LONG datatype

我在另一列中使用UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR())并且它可以正常工作。

这种情况有什么问题?

2 个答案:

答案 0 :(得分:0)

您可以通过致电@include keyframes(border-animation) { 0% { border: 10px solid transparent; border-right: 10px solid black; } 25% { border: 10px solid transparent; border-bottom: 10px solid; } 50% { border: 10px solid transparent; border-left: 10px solid; } 75% { border: 10px solid transparent; border-top: 10px solid; } }; 离开它:它会返回DBMS_LOB.SUBSTR

varchar2

但是,请记住,Oracle SQL只能拥有4000个字节的select DBMS_LOB.SUBSTR(ds_cirurgia,1,4000) from AVISO_CIRURGIA where cd_paciente = 123456789 ,而不是4000个字符。如果字符串包含Unicode字符,则您的调用可能会失败。

答案 1 :(得分:0)

您的列类型 LONG 不是CLOB。在USER_TAB_COLUMNS中查看它。

Here是如何解决它的一些解决方法。我重新尝试用CTAS将类型更改为CLOB。

create table t1 as
select ...
to_lob(c) c  /* convert to CLOB */
from t;

之后你可以简单地转换为VARCHAR,例如

 cast (substr(col_name,1,4000) as varchar2(4000)) 

<强>更新

当然您也可以使用DBMS_LOB.SUBSTR

 DBMS_LOB.SUBSTR(col_name,4000,1)

但请注意此函数的签名:第二个参数是长度,第三个偏移(反之亦然,如在substr中)。