Oracle10g ORA-00932在视图上使用外部联接时

Oracle10g ORA-00932在视图上使用外部联接时,oracle10g,outer-join,ora-00932,Oracle10g,Outer Join,Ora 00932,我的简化查询如下: INSERT INTO table1 (acct_no, name, description) SELECT a.acct_no, b.name, TO_LOB(c.description) FROM tableA a, viewB b, tableC c WHERE a.person_id = b.person_id(+) AND a.person_id = c.person_id; 注意:我使用的是Oracle 10g,table1.description为LOB类

我的简化查询如下:

INSERT INTO table1
(acct_no, name, description)
SELECT a.acct_no,
 b.name,
 TO_LOB(c.description)
FROM tableA a, viewB b, tableC c
WHERE a.person_id = b.person_id(+)
AND a.person_id = c.person_id;
注意:我使用的是Oracle 10g,table1.description为LOB类型,c.description为LONG类型,viewB为视图,table1.name为与b.name相同的数据类型

上述查询返回:

SQL错误:ORA-00932:不一致的数据类型:应为-变长 93200000-“不一致的数据类型:预期的%s得到了%s”

错误指向我使用to_LOB函数的行

但是,如果移除外部联接,则效果良好。即以下工作:

INSERT INTO table1
(acct_no, name, description)
SELECT a.acct_no,
 b.name,
 TO_LOB(c.description)
FROM tableA a, viewB b, tableC c
WHERE a.person_id = b.person_id
AND a.person_id = c.person_id;
但我确实需要使用外部联接,我无法理解为什么在viewB上使用外部联接会导致另一个表(tableC)中的字段出现不一致的数据类型错误

基本上,TO_LOB()本身(没有外部连接)可以工作,外部连接本身也可以工作,但是当这两个都包含在SQL中时,它会在一个不太可能的地方出错


有什么想法吗?

此问题可能是由于以下链接底部指出的Oracle错误造成的:


在我的例子中,我采用了一种避免使用视图的解决方法,而是直接使用表,它起了作用。

正如下面链接底部指出的,这个问题可能是由于Oracle错误造成的:


在我的例子中,我采用了一种避免使用视图的变通方法,而是直接使用表,它起了作用。

什么数据类型是
tablec.columnc
?(顺便说一句,混淆表名和列名并没有真正的帮助)。您应该在where子句中使用显式的
JOIN
语法,而不是隐式的JOIN。在我的原始查询中有26列和9个表,因此我认为更容易说明简化的SQL。c、 columnC的类型与注释中所述的一样长。我尝试过使用显式的左外联接语法,但结果是相同的。关于
JOIN
语法的注释并不是为了解决您的问题,而是作为一般的“好建议”。刚刚用更有意义的列名称更新了原始问题。什么数据类型是
tablec.columnc
?(顺便说一句,混淆表名和列名并没有真正的帮助)。您应该在where子句中使用显式的
JOIN
语法,而不是隐式的JOIN。在我的原始查询中有26列和9个表,因此我认为更容易说明简化的SQL。c、 columnC的类型与注释中所述的一样长。我尝试过使用显式的左外联接语法,但结果是相同的。关于
JOIN
语法的注释并不是为了解决您的问题,而是作为一般性的“好建议”。只是用更有意义的列名更新了原始问题