Partilhar via


Junções exteriores

O ODBC suporta a sintaxe SQL-92 esquerda, direita e a junção externa completa. A sequência de escape para junções exteriores é

{ojouter-join}

onde a junção externa é

referência-tabela {LEFT | RIGHT | FULL} OUTER JOIN {referência-tabela | outer-join} ONcondição-pesquisa

Referência-de tabela especifica um nome de tabela, e condição de pesquisa especifica a condição de junção entre as referências de tabela.

Um pedido de junção externa deve aparecer após a palavra-chave FROM e antes da cláusula WHERE (se existir). Para informações completas sobre a sintaxe, consulte Sequência de Escape de Junção Exterior no Apêndice C: Gramática SQL.

Por exemplo, as seguintes instruções SQL criam o mesmo conjunto de resultados que lista todos os clientes e mostra quais têm encomendas em aberto. A primeira declaração utiliza a sintaxe da sequência de escape. A segunda instrução usa a sintaxe nativa da 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, uma aplicação chama SQLGetInfo com a flag SQL_OJ_CAPABILITIES. Os tipos de uniões exteriores que podem ser suportadas são uniões à esquerda, à direita, completas ou aninhadas; uniões exteriores em que os nomes das colunas na cláusula ON não têm a mesma ordem que os respetivos nomes das tabelas na cláusula OUTER JOIN; uniões internas em conjunto com uniões exteriores; e uniões exteriores usando qualquer operador de comparação ODBC. Se o tipo de informação SQL_OJ_CAPABILITIES devolver 0, nenhuma cláusula de junção externa é suportada.