Задержка, я вижу слишком много вундеркиндов, комментирующих вопросы 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, но недостаточно хорош, чтобы заставить меня понять или чувствовать себя комфортно с исчерпывающей информацией.
Примечание. Я планирую перенести более 200 пакетов и процедур, если вместо (+)
следует использовать ключевое слово, 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: прочитайте сводку ответов для всех сгруппированных обновлений.