MACRO

有效对象

提取和复制

说明

使用 MACRO 参数创建 Oracle GoldenGate 宏。有关使用宏(包括如何正确调用宏)的更多信息,请参见 Using Macros 。

默认值

无

语法

必须按显示的顺序使用以下项:

MACRO *#<macro_name>*
PARAMS (*#<param_name>* [, ...])
BEGIN
<macro_body>
END;

MACRO

启动宏规范。

<#>

宏字符。宏和参数名称必须以宏字符开头。参数文件中以宏字符开头的任何内容都将假定为宏或宏参数。

默认宏字符为磅 (#) 字符,如以下示例中所示:

MACRO #macro1
PARAMS (#param1, #param2)

可以使用 MACROCHAR 参数更改宏字符。

<macro_name>

宏的名称。宏名称必须是一个包含字母数字字符的单词(允许使用下划线),并且不区分大小写。参数文件中的每个宏名称必须唯一。不要使用引号,否则宏名称将被视为文本并被忽略。

PARAMS

启动参数子句。参数子句是可选的。假定有充足的内存可用,则最大大小和参数数量没有限制。

<param_name>

描述宏的参数。参数名称不区分大小写。请勿使用引号,否则参数名称将被视为文本并忽略。

宏中使用的每个参数必须在 PARAMS 语句中声明,在调用宏时,调用必须为每个参数包括一个值。

BEGIN

开始宏正文。必须在宏正文之前指定。

<macro_body>

宏的主体。宏主体的大小是无限的,假设有足够的可用内存。宏主体可以包括以下任一类型的语句:

COL1 = COL2
COL1 = #val2
#colmap(COL1, #sourcecol)

END;

结束宏定义。需要使用分号来完成定义。

示例

示例 1

以下示例定义了一个接受参数的宏。

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;

示例 2

以下示例定义不需要参数的宏。

MACRO #option_defaults
BEGIN
GETINSERTS
GETUPDATES
GETDELETES
INSERTDELETES
END;

示例 3

以下示例定义了一个名为 #assign_date 的宏,该宏调用另一个名为 #make_date 的宏。

MACRO #assign_date
PARAMS (#target_col, #year, #month, #day)
BEGIN
#target_col = #make_date (#year, #month, #day)
END;