首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBA_MVIEWS: ORA-00932:不一致的数据类型:预期-长

DBA_MVIEWS: ORA-00932:不一致的数据类型:预期-长
EN

Stack Overflow用户
提问于 2018-12-03 17:40:48
回答 1查看 2.5K关注 0票数 1

我想将DBA_MVIEWS表的“查询”列看作一个简单的文本。

如果我执行以下语句:

代码语言:javascript
复制
select to_lob(query) from dba_mviews;

我有一个错误:

代码语言:javascript
复制
ORA-00932: inconsistent datatypes: expected - got LONG

我对此没有错误,相反:

代码语言:javascript
复制
select query from dba_mviews;

但我在DBVisualizer中得到了一个CLOB结果。

我在用:

  • Oracle数据库12c企业版发行版12.1.0.2.064位生产
  • 产品: DbVisualizer Pro 10.0.15 Build #2861
  • 操作系统:
  • 操作系统版本: 10.14.1
  • OS Arch: x86_64
  • Java版本: 1.8.0_172

到底怎么回事?

EN

回答 1

Stack Overflow用户

发布于 2018-12-03 18:41:07

从Oracle文档中 (重点后加):

TO_LOB将列long_column中的LONGLONG RAW值转换为LOB值。只能将此函数应用于LONGLONG RAW列、以及语句中子查询的选择列表中。

因此,您不能在简单的查询中使用它,因为您正在尝试这样做。而且,创建一个表来插入查询字符串可能对您没有多大帮助,也没有什么实际意义。

处理long值通常有点痛苦。您可以在PL/SQL块中将它们转换为CLOBs,例如:

代码语言:javascript
复制
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值了,所以希望这仍然适用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53599009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档