【发布时间】:2015-07-21 14:24:25
【问题描述】:
我想选择并可视化具有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()),它有效。
在这种情况下有什么问题?
【问题讨论】:
-
请贴出 select data_type from user_tab_columns where table_name = 'AVISO_CIRURGIA' and column_name = upper('ds_cirurgia')的结果;
-
对于 CLOB,您可以使用 GetClobVal() 函数
-
嗨@MarmiteBomber。谢谢你的帮助。我运行了您建议的查询,但似乎我的 user_tab_columns 为空。当我执行一个简单的选择时,例如:“从 AVISO_CIRURGIA 中选择 ds_cirurgia”,它将每一行显示为“CLOB,以字节为单位的大小”,例如:第一行中的“CLOB,202 字节”,“CLOB,482 字节”在第二行......
-
抱歉最后的评论。现在它可以使用: select * from ALL_TAB_COLUMNS where table_name = 'AVISO_CIRURGIA' and column_name = upper('ds_cirurgia'); TABLE_NAME:AVISO_CIRURGIA COLUMN_NAME:DS_CIRURGIA DATA_TYPE:LONG
-
@Henrique Amaral 你从这个查询中得到了什么?还要检查 DBMS_LOB.SUBSTR(col_name,1,4000) 中的交换参数 - 应该是 4000,1
标签: sql oracle select clob ora-00997