不久之后,我看到太多的怪人评论Oracle的问题,说“不要使用()运算符,而是使用JOIN语法”。
我确实看到这两个都很好。但是,使用它们的真正区别是什么?我会欢迎答案,更多来自经验。
1. Is there anything to do with limitations in application, performance,
etc. while using them?
2. What would you suggest for me?
我在Oracle documentation读了一些东西,但并不足以让我理解或感受到全面的信息。
注意:我打算迁移200个包和程序,如果使用Keyword而不是()
3. Also is there any freeware tools to do the rewrite?
发布样品
+----------------------------------+------------------------------------------------+
|-INNER JOIN - CONVENTIONAL |-INNER JOIN - ANSI SYNTAX |
|----------------------------------|------------------------------------------------|
|SELECT |SELECT |
| EMP.DEPTNO | ENAME, |
|FROM | DNAME, |
| EMP, | EMP.DEPTNO, |
| DEPT | DEPT.DEPTNO |
|WHERE | FROM |
| EMP.DEPTNO = DEPT.DEPTNO; | SCOTT.EMP INNER JOIN SCOTT.DEPT |
| | ON EMP.DEPTNO = DEPT.DEPTNO; |
|----------------------------------|------------------------------------------------|
|-LEFT OUTER JOIN - CONVENTIONAL |-LEFT OUTER JOIN - ANSI SYNTAX |
|----------------------------------|------------------------------------------------|
|SELECT | SELECT |
| EMP.DEPTNO | ENAME, |
|FROM | DNAME, |
| EMP, | EMP.DEPTNO, |
| DEPT | DEPT.DEPTNO |
|WHERE | FROM |
| EMP.DEPTNO = DEPT.DEPTNO(+);| SCOTT.EMP LEFT OUTER JOIN SCOTT.DEPT |
| | ON EMP.DEPTNO = DEPT.DEPTNO; |
|----------------------------------|------------------------------------------------|
|-RIGHT OUTER JOIN - CONVENTIONAL |-RIGHT OUTER JOIN - ANSI SYNTAX |
|----------------------------------|------------------------------------------------|
|SELECT | SELECT |
| EMP.DEPTNO | ENAME, |
|FROM | DNAME, |
| EMP, | EMP.DEPTNO, |
| DEPT | DEPT.DEPTNO |
|WHERE | FROM |
| EMP.DEPTNO(+) = DEPT.DEPTNO;| SCOTT.EMP RIGHT OUTER JOIN SCOTT.DEPT |
| | ON EMP.DEPTNO = DEPT.DEPTNO; |
|----------------------------------|------------------------------------------------|
|-FULL OUTER JOIN - CONVENTIONAL |-FULL OUTER JOIN - ANSI SYNTAX |
|----------------------------------|------------------------------------------------|
| | |
|SELECT | SELECT |
| * | * |
|FROM | FROM |
| EMP, | SCOTT.EMP FULL OUTER JOIN SCOTT.DEPT |
| DEPT | ON EMP.DEPTNO = DEPT.DEPTNO; |
|WHERE | |
| EMP.DEPTNO = DEPT.DEPTNO(+) | |
|UNION ALL | |
|SELECT | |
| * | |
|FROM | |
| EMP, | |
| DEPT | |
|WHERE | |
| EMP.DEPTNO(+) = DEPT.DEPTNO | |
| AND EMP.DEPTNO IS NULL; | |
|__________________________________|________________________________________________|
PS:阅读所有更新分组的答案摘要。