Compartilhar via


Junções externas

O ODBC dá suporte à sintaxe de junção externa esquerda, direita e completa do SQL-92. A sequência de escape de junções externas é

{oj outer-join}

em que outer-join é

table-reference {LEFT | RIGHT | FULL} OUTER JOIN {table-reference | outer-join} ON search-condition

table-reference especifica um nome de tabela e search-condition especifica a condição de junção entre as table-references.

Uma solicitação de junção externa deve aparecer após a palavra-chave FROM e antes da cláusula WHERE (se houver). Para obter informações completas sobre sintaxe, confira Sequência de escape de junção externa no Apêndice C: Gramática SQL.

Por exemplo, as instruções SQL a seguir criam o mesmo conjunto de resultados que lista todos os clientes e mostra qual tem ordens em aberto. A primeira instrução usa a sintaxe de sequência de escape. A segunda instrução usa a sintaxe nativa para Oracle e não é interoperável.

SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status  
   FROM {oj Customers LEFT OUTER JOIN Orders ON Customers.CustID=Orders.CustID}  
   WHERE Orders.Status='OPEN'  
  
SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status  
   FROM Customers, Orders  
   WHERE (Orders.Status='OPEN') AND (Customers.CustID= Orders.CustID(+))  

Para determinar os tipos de junções externas que uma fonte de dados e um driver suportam, um aplicativo chama SQLGetInfo com o sinalizador SQL_OJ_CAPABILITIES. Os tipos de junções externas que podem ser suportados são junções externas esquerdas, direitas, completas ou aninhadas; junções externas nas quais os nomes de coluna na cláusula ON não têm a mesma ordem que seus respectivos nomes de tabela na cláusula OUTER JOIN; junções internas em conjunto com junções externas; e junções externas usando qualquer operador de comparação ODBC. Se o tipo de informação SQL_OJ_CAPABILITIES retornar 0, nenhuma cláusula de junção externa será suportada.