Histórico da Página
...
Em versões mais antigas destes bancos de dados era feito desta forma o uso da , 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.
...
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:
...
Bloco de código | ||
---|---|---|
| ||
DEFINE sql_stmt CHAR(1000) LET sql_stmt = "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)" WHENEVER ERROR CONTINUE PREPARE var_query FROM sql_stmt DECLARE cq_empresas CURSOR FOR var_query WHENEVER ERROR STOP |
...
Neste caso poderia ser retirado o uso de SQL preparado da seguinte forma:
Bloco de código | ||
---|---|---|
| ||
WHENEVER ERROR CONTINUE DECLARE cq_empresas CURSOR FOR 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) WHENEVER ERROR STOP |