ORA-01445:无法在没有密钥保存表的情况下从连接视图中选择ROWID或示例
我在ORACLE 10g上有一个长的select语句。根据这个错误声明,我在google上看到了一些答案。答案之一是这样说;
*限制连接中的表数,在Oracle9.2.0.5上遇到一个不寻常的错误(4204878/ 3765373/ 3004824)。当在select语句中完成超过22个ANSII联接时,就会发生ORA-01445。
我计算整个select块中的联接数;是23 (在select之后和where子句之后)。具有这个"selec"t语句的SP一直工作得很好,直到我在where子句之后添加了这个新的联接.
简而言之,我已经通过禁用一个现有的join进行了测试,并启用了新添加的join和SP工作。
你认为有什么限制吗?
**我不能告诉你网站的附加信息,因为它总是被StackOverflow的用户抹黑。
发布于 2011-09-16 09:46:50
我碰到过几次这样的虫子。它发生了很多在9i与ANSI连接,我发现它发生频率较少,在10g。
解决方法之一是重写连接以使用“旧”连接同步,特别是APC指出的外部联接:
SELECT *
FROM a, b
WHERE a.a_id = b.a_id (+)
发布于 2012-05-04 18:58:35
我只是通过选择在查询中使用的列来解决这个问题。
由此:
select a.column1, b.column3
from a
join b on b.column2 = a.column2
对此:
select a.column1, b.column3
from (select column1, column2 from a) a
join (select column2, column3 from b) b on b.column2 = a.column2
https://stackoverflow.com/questions/7442763
复制相似问题