Páginas filhas
  • log0810_prepare_sql()

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Em versões mais antigas destes bancos de dados, era utilizada a condição OUTER JOIN da seguinte forma:

INFORMIX

Diretiva OUTER

SELECT empresa.cod_empresa, log_empresa_compl.dat_encerram_ativ
  FROM empresa, OUTER log_empresa_compl
 WHERE log_empresa_compl.empresa = empresa.cod_empresa

ORACLE

Diretiva (+)

SELECT empresa.cod_empresa, log_empresa_compl.dat_encerram_ativ
  FROM empresa, log_empresa_compl
 WHERE log_empresa_compl.empresa (+) = empresa.cod_empresa

SQLSERVER

Diretiva *

SELECT empresa.cod_empresa, log_empresa_compl.dat_encerram_ativ
  FROM empresa, log_empresa_compl
 WHERE log_empresa_compl.empresa = * empresa.cod_empresa


Para resolver esta diferença, era feito o uso da função log0810_prepare_sql() montando uma instrução SQL em um bloco de texto (CHAR) e enviado como parâmetro para função log0810_prepare_sql(), que tinha como objetivo converter a instrução SQL conforme o banco de dados em uso no Logix e o resultado seria retornado com a instrução compatível com o banco de dados. 

...

Com a evolução dos bancos de dados homologados para o Logix, esta diferença das diretivas utilizadas foram resolvidas e agora todos os bancos de dados fazem uso da instrução SQL no padrão ANSI SQL. Com isso, passamos a resolver o SQL anterior de uma única forma, utilizando o bloco LEFT OUTER JOIN:

INFORMIX

ORACLE

SQLSERVER

SELECT empresa.cod_empresa, log_empresa_compl.dat_encerram_ativ
  FROM empresa LEFT OUTER JOIN log_empresa_compl
    ON (log_empresa_compl.empresa = empresa.cod_empresa)

 

Desta forma os códigos dos fontes Logix que fazem uso da função log0810_prepare_sql() precisam ser ajustados para adaptar os SQLs preparados e com chamada da função log0810_prepare_sql() para utilizarem o novo padrão ANSI SQL - OUTER JOIN e retirada da chamada da função log0810_prepare_sql() conforme exemplo abaixo:

...