文档解释
ORA-25156: old style outer join (+) cannot be used with ANSI joins
Cause: When a query block uses ANSI style joins, the old notation for specifying outer joins (+) cannot be used.
Action: Use ANSI style for specifying outer joins also.
ORA-25156消息给出的相关信息指出无法使用ANSI(美国国家标准学会)中指明的外连接方式(旧式外连接方式)。 因为在ANSI标准之后,ORACLE被要求在其SQL编程语言中实现更加统一的外连接操作,更完整的功能支持及更好的性能与健壮性等。
此错误码一般是由于在Oracle SQL语句中使用了旧式的外键方式,例如“表.列(+)”,而不是使用ANSI标准外键方式来进行操作导致的。因此,要解决此问题,可以使用ANSI标准的外键语句,例如:
SELECT a.column1, b.column2
FROM table1 a
LEFT JOIN table2 b
ON (a.column3 = b.column3);
此外,还可以使用Oracle提供的一些兼容功能支持ANSI标准外键操作,以解决此问题,请参考官方文档:
ALTER SESSION {SET syntax_obl_skg_hint = ‘enabled’ | disable} [;]