我想将DBA_MVIEWS表的“查询”列看作一个简单的文本。
如果我执行以下语句:
select to_lob(query) from dba_mviews;我有一个错误:
ORA-00932: inconsistent datatypes: expected - got LONG我对此没有错误,相反:
select query from dba_mviews;但我在DBVisualizer中得到了一个CLOB结果。
我在用:
到底怎么回事?
发布于 2018-12-03 18:41:07
从Oracle文档中 (重点后加):
TO_LOB将列long_column中的LONG或LONG RAW值转换为LOB值。只能将此函数应用于LONG或LONG RAW列、以及语句中子查询的选择列表中。
因此,您不能在简单的查询中使用它,因为您正在尝试这样做。而且,创建一个表来插入查询字符串可能对您没有多大帮助,也没有什么实际意义。
处理long值通常有点痛苦。您可以在PL/SQL块中将它们转换为CLOBs,例如:
declare
l_long long;
l_clob clob;
begin
select query into l_long from dba_mviews;
l_clob := to_clob(l_long);
-- do something with l_clob
end;
/..。但这在这里可能也不太有用,即使您创建了一个返回流水线CLOB的函数。
DBVisualizer文档说:
由于二进制/BLOB和CLOB数据的性质,只有在单元格编辑器中才能完全修改和查看这些类型的单元格。(表单编辑器中有部分支持查看图像数据和从文件加载)。 在网格中,二进制/BLOB和CLOB数据默认由图标和值的大小表示。您可以在Tools Properties对话框中的Grid /二进制/BLOB和CLOB数据类别中的General选项卡下选择另一种表示格式。按值进行选择会导致性能损失和内存消耗急剧增加。
这不是我使用过的工具,但听起来好像它已经像CLOB那样处理和显示long值了,所以希望这仍然适用。
https://stackoverflow.com/questions/53599009
复制相似问题