【发布时间】:2014-02-09 19:15:27
【问题描述】:
我正在浏览一些代码并遇到一个视图,我想知道 WHERE 语句的哪一部分在做什么,看起来是这样的。
receipt_note.receipt_num(+) = receipt_data.receipt_num
receipt_num 是表中的一个 NUMBER。我只是不知道 (+) 会在这里做什么。是在那个数字上加 1,就像在编码中你会做变量 ++
【问题讨论】:
-
这是在 Oracle 中编写外连接的旧方法
-
它已经过时了,Oracle 推荐使用 ANSI 连接语法,但我认为它不会被 Oracle 弃用,并且会在未来的版本中完全删除。如果您个人更喜欢这种语法,则可以使用它。如果您不使用最新的 Oracle 数据库版本,有时建议您使用旧的 Oracle 语法,因为 Oracle 中有几个与 ANSI 连接语法相关的错误。例如,如果查询是使用 ANSI 连接语法编写的,则无法在实体化视图上使用
FAST REFRESH。不知道这段时间有没有修复这个bug,我还没测试。 -
我刚刚检查了 Oracle 页面。使用 FAST REFRESH 的 MATERIALIZED VIEW 不能使用 ANSI 连接语法。 Oracle 不认为这是一个错误!如果您有权访问 Oracle 支持,请参阅 Oracle 文档 ID 1372720.1 了解详细信息。