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;