Diretrizes para Usar Macros Customizadas
Mantenha as seguintes diretrizes em mente ao criar ou usar uma macro customizada:
*
*
Se uma origem de dados tiver sido configurada com a propriedade ENABLE_SELECT_SORT_BY = TRUE, será necessário gravar macros customizadas de SQL bruta com uma cláusula ORDER BY para classificar os registros retornados pelos campos-chave de público do nível de público no qual você está trabalhando. Caso contrário, se a ordem de classificação não estiver conforme o esperado, um erro será gerado quando a macro customizada for usada em um campo derivado em um processo Captura Instantânea.
*
*
Quando uma macro customizada usa tabelas temporárias em sua lógica subjacente, uma tabela temporária será forçada para o banco de dados, para que a lógica não falhe.
No entanto, se uma macro customizada for usada em um SELECT de nível superior, não haverá histórico para o Campaign usar para forçar uma tabela temporária para o banco de dados e a lógica falhará.
Assim, ao criar uma macro customizada que usa SQL bruta, pode ser necessário criar duas versões da mesma macro customizada - uma que usa tokens da tabela temporária e outra que não usa.
A macro customizada sem tokens da tabela temporária pode ser usada na parte superior de uma árvore (por exemplo, no primeiro SELECT). Aquela com tokens da tabela temporária pode ser usada em qualquer local na árvore na qual pode haver uma tabela temporária para beneficiar-se.
*
Por exemplo, se você usar uma macro customizada com base na SQL bruta que retorna um valor e (em um processo Captura Instantânea, por exemplo) efetuar a saída da macro customizada e outro campo da tabela na qual a macro customizada está baseada, o Campaign executará uma junção automática nessa tabela. Se a tabela não estiver normalizada, você acabará com um produto Cartesiano (ou seja, o número de registros exibidos será maior que o esperado).
*
No tempo de execução, uma macro customizada será resolvida consultando sua definição na tabela do sistema UA_CustomMacros (na qual definições são armazenadas) e depois usada/executada.
*
O Campaign suporta consultas armazenadas de liberações anteriores. No entanto, referências para consultas armazenadas não exclusivas usam a sintaxe antiga:
storedquery(<query name>)
*
Ao resolver variáveis do usuário em macros customizadas, o Campaign usa o valor atual da variável de usuário ao verificar a sintaxe. Se o valor atual estiver em branco, o Campaign gerará um erro.
*
*
Se você pretende usar a macro customizada em diversos bancos de dados diferentes, pode desejar usar uma expressão do IBM® em vez da SQL bruta, pois a SQL bruta pode ser específica para um determinado banco de dados.
*
*
O Campaign trata uma vírgula como um separador de parâmetros. Se você estiver usando vírgulas como caracteres literais em um parâmetro, coloque o texto entre colchetes de abertura e fechamento ({}), como no seguinte exemplo:
TestCM( {STRING_CONCAT(UserVar.Test1, UserVar.Test2) } )
*
O Campaign suporta substituição simples para parâmetros em macros customizadas usando código de SQL bruta. Por exemplo, se você configurar uma caixa Selecionar Processo em um fluxograma que contém esta consulta:
exec dbms_stats.gather_table_stats(tabname=> <temptable>,ownname=> 'autodcc')
Campaign substituirá com êxito a tabela temporária real no lugar do token <temptable>. Observe que as aspas simples no nome da tabela são obrigatórias.
As seguintes tabelas mostram como o Campaign trata as macros customizadas nas consultas e campos derivados.
Macros customizadas nas consultas e campos derivados (Selecionar, Segmento e Processos de Público)
Se o valor não for usado dessa forma, o Campaign tratará um valor que não seja zero como TRUE para a seleção de ID e um valor zero e a sequência como FALSE.
Em uma consulta SQL bruta (Selecionar, Segmento e Processos de Público)