Oracle:使用 to_lob 从 user_ind_expressions 转换 column_expression 时出现 ORA-00932

Posted

技术标签:

【中文标题】Oracle:使用 to_lob 从 user_ind_expressions 转换 column_expression 时出现 ORA-00932【英文标题】:Oracle: ORA-00932 when converting column_expression from user_ind_expressions using to_lob 【发布时间】:2008-10-06 13:30:41 【问题描述】:

尝试在 Oracle 10.2 上运行这两个简单的语句:

CREATE TABLE mytest
   (table_name varchar2(30), 
   index_name varchar2(30), 
   column_expression clob,
   column_position number);

INSERT INTO mytest 
  (table_name,
   index_name,
   column_expression, 
   column_position) 
SELECT table_name, index_name,
       to_lob(column_expression), column_position 
FROM user_ind_expressions EXPRA 
WHERE NOT EXISTS 
   (SELECT 1 FROM user_constraints 
    WHERE constraint_name = EXPRA.index_name 
    AND table_name = EXPRA.table_name);

这会导致这个错误:

第 1 行的错误: ORA-00932: 不一致的数据类型: 预期 - 得到 LONG

如果我像这样省略 WHERE NOT EXISTS:

INSERT INTO mytest 
   (table_name,index_name,column_expression, column_position) 
SELECT table_name,index_name,
       to_lob(column_expression), column_position 
FROM user_ind_expressions EXPRA;

有效:

已创建 23 行。

发生了什么事?

【问题讨论】:

【参考方案1】:

如果 Michel Cadot says 是一个错误,那么几乎可以肯定它是一个错误。

【讨论】:

【参考方案2】:

是的,好像是这样。

http://www.orafaq.com/forum/m/352199/130782/#msg_352199

【讨论】:

以上是关于Oracle:使用 to_lob 从 user_ind_expressions 转换 column_expression 时出现 ORA-00932的主要内容,如果未能解决你的问题,请参考以下文章

oracle 如何把long类型转换成字符类型

Mysql查询的执行顺序

返回 JOIN 查询中列的 SUM

Laravel 7 / SQL不区分大小写的where子句

mysql #1054 使用 phpmyadmin 的未知列 [关闭]

MySQL JOIN 2 个表并分别获取两个表的总和