Estudando alguns recursos do banco para utilizar na Integração, verifiquei a existência de uma interessante característica do Oracle.
Estava escrevendo uma estrutura de integração onde iria alterar uma trigger em uma tabela central do sistema de gestão de planos de saúde da Unimed Fortaleza. Como temos outras Unimeds como clientes, não poderia simplesmente referenciar minhas novas estruturas nesta trigger e enviá-las em outras versões para eles.
A compilação condicional permite utilizar o pré-processador do PL/SQL a fim de decidir se um excerto de código irá ou não ser utilizado na compilação.
Utilização
O exemplo abaixo ilustra uma função que utiliza este recurso:
Ao compilar esta função normalmente com o comando ALTER FUNCTION IDADE COMPILE;, teríamos o seguinte código:
Para utilizar a compilação condicional, teríamos o seguinte comando:
ALTER FUNCTION idade COMPILE PLSQL_CCFLAGS = ‘auditoria_idade:TRUE’ REUSE SETTINGS;
Teríamos o código deste jeito:
Conclusão
A utilização da compilação condicional permite que sejam ativados blocos de códigos de acordo com a passagem de parâmetros durante a compilação.
A principal desvantagem é a ortogonalidade do código, que fica um pouco comprometida pela utilização de instruções pouco usuais. Outro fator é que não temos como documentar as macros que são utilizadas nos códigos, a não ser que o objeto seja lido.
Vejo como maior vantagem a possibilidade de incluirmos códigos, que em certos contextos podem ser inválidos. Por exemplo, um cliente X não terá a estrutura de integração, mesmo assim, posso fazer referência às packages dentro do bloco condicional que este só será validado na compilação em que seja passado o valor TRUE para a macro.




Últimos Comentários