Using ANSI Joins in Oracle Data Integrator (ODI)

by | Apr 23, 2015

By default Oracle Data Integrator (ODI) 11g uses the “old-style” join syntax when joining tables.  While many Oracle developers still prefer that style of join, I for one find ANSI joins to be far cleaner and easier to read.

Oracle started supporting ANSI joins in 2001, so it is highly unlikely using these will cause your database to crumble to the ground.  While there are ramblings that ANSI joins are now better supported by Oracle’s 12c optimizer, I cannot find concrete evidence either way to support choosing one over the other for performance reasons.

If you want ODI to use ANSI joins instead of the old style, ODI ANSI Join  go to the “Quick Edit” tab in your ODI interface and expand out the “Joins” section.  You will see an “Ordered” checkbox to the right of each join.  Select this to use ANSI style joins.  You will also need to make sure your table joins are ordered correctly.  This can be done by using the “Order” column next to the “Ordered” checkbox.  You cannot use a mix of join types, so either select or deselect all of the checkboxes.

Here are the differences between the two syntaxes:

Old-Style Join Syntax

  • Relationships are defined in the WHERE clause

  • Outer joins are represented by (+)

SELECT c.customer_name,
d.dept_no,
p.position_name
FROM customer c, department d, position p
WHERE c.dept_no = d.dept_no
AND c.position_code=p.position_code (+)

ANSI Join Syntax

  • Relationships are defined using the ON clause

  • All joins are named in statement allowing for better readability

SELECT c.customer_name,
d.dept_no,
p.position_name
FROM customer c
INNER JOIN department d
ON c.dept_no = d.dept_no
LEFT OUT JOIN position p
ON c.position_code=p.position_code

In ODI 12c, you can use ANSI joins by finding and selecting the “Generate ANSI Syntax” checkbox.  Yes, Oracle has improved its choice of name in 12c.

Hope this helps, Nic!

We run regular business intelligence courses in both Wellington and Auckland. Find out more here.

0 Comments
Submit a Comment

Your email address will not be published. Required fields are marked *