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:

COL1 = COL2
COL1 = #val2
#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;