MACRO
Válido Para
Extract e Replicat
Descrição
Use o parâmetro MACRO para criar uma macro do Oracle GoldenGate. Consulte Uso de macros para obter mais informações sobre o uso de macros, incluindo como chamá-las adequadamente.
Padrão
Nenhum
Sintaxe
O seguinte deve ser usado na ordem mostrada:
MACRO *#<macro_name>*
PARAMS (*#<param_name>* [, ...])
BEGIN
<macro_body>
END;
MACRO
Inicia a especificação da macro.
<#>
O caractere macro. Os nomes de macro e parâmetro devem começar com um caractere de macro. Tudo no arquivo de parâmetro que começa com o caractere de macro é considerado um parâmetro de macro ou uma macro.
O caractere de macro padrão é o caractere de libra (#), como nos seguintes exemplos:
MACRO #macro1
PARAMS (#param1, #param2)
Você pode alterar o caractere de macro com o parâmetro MACROCHAR.
<macro_name>
O nome da macros. Os nomes de macro devem ser uma palavra com caracteres alfanuméricos (sublinhados são permitidos) e não fazem distinção entre maiúsculas e minúsculas. Cada nome de macro em um arquivo de parâmetros deve ser exclusivo. Não use aspas; caso contrário, o nome da macro será tratado como texto e ignorado.
PARAMS
Inicia uma cláusula de parâmetro. Uma cláusula de parâmetros é opcional. O tamanho e número máximos de parâmetros são ilimitados, supondo que haja memória suficiente disponível.
<param_name>
Descreve um parâmetro para a macro. Nomes de parâmetros não diferenciam maiúsculas de minúsculas. Não use aspas; caso contrário, o nome do parâmetro será tratado como texto e ignorado.
Cada parâmetro usado em uma macro deve ser declarado na instrução PARAMS e, quando a macro for chamada, a chamada deverá incluir um valor para cada parâmetro.
BEGIN
Inicia o corpo da macro. Deve ser especificado antes do corpo da macros.
<macro_body>
O corpo da macro. O tamanho do corpo da macro é ilimitado, assumindo memória disponível suficiente. Um corpo de macro pode incluir qualquer um dos seguintes tipos de instruções:
- Instruções de parâmetro simples, como em:
COL1 = COL2
- Instruções complexas, como em:
COL1 = #val2
- Chamadas de outras macros, como em:
#colmap(COL1, #sourcecol)
END;
Conclui a definição macro. O ponto-e-vírgula é necessário para completar a definição.
Exemplos
Exemplo 1
O exemplo a seguir define uma macro que utiliza parâmetros.
MACRO #make_date
PARAMS (#year, #month, #day)
BEGIN
@DATE('YYYY-MM-DD', 'CC', @IF(#year < 50, 20, 19),
'YY', #year, 'MM', #month, 'DD', #day)
END;
Exemplo 2
O exemplo a seguir define uma macro que não requer parâmetros.
MACRO #option_defaults
BEGIN
GETINSERTS
GETUPDATES
GETDELETES
INSERTDELETES
END;
Exemplo 3
O exemplo a seguir define uma macro chamada #assign_date que chama outra macro chamada #make_date.
MACRO #assign_date
PARAMS (#target_col, #year, #month, #day)
BEGIN
#target_col = #make_date (#year, #month, #day)
END;