Páginas filhas
  • log0810_prepare_sql()

Versões comparadas

Chave

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

...

O motivo para retirada da função log0810_prepare_sql() do padrão de desenvolvimento do Logix é para atender a evolução das versões de banco de dados homologadas no produto Logix.

A função log0810_prepare_sql() apenas foi criada para atender versões antigas do Logix, onde existiam diferenças de instrução SQL envolvendo a ação de OUTER JOIN, que por padrão para o banco Informix, no passado, era utilizada diretiva "OUTER", precedendo as tabelas não obrigatórias no bloco da lista das tabelas (bloco FROM) de uma instrução SELECT realizada no banco de dados, mas o uso desta diretiva era uma particularidade do banco informix o uso desta diretivaapenas para o banco de dados Informix.

 

Em versões mais antigas destes Para exemplificar como a condição OUTER JOIN era prevista em versões antigas dos bancos de dados , era utilizada a condição OUTER JOIN da seguinte formahomologados para o Logix, veja a diferença de uma mesma instrução SQL válida para os diferentes bancos de dados:

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 , devido a não existir um recurso de conversão automática da condição OUTER do Informix para os padrões correspondentes dos bancos Oracle e SQLServer, os fontes do Logix foram ajustados para fazer uso da função log0810_prepare_sql() montando uma instrução SQL em um bloco de texto (CHAR) e este era enviado como parâmetro para tal 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. 

...