マクロの定義

Oracle GoldenGateマクロを定義するには、パラメータ・ファイルでMACROパラメータを使用します。MACROでは、必要な入力パラメータを定義し、マクロにより実行する処理を定義します。

構文

MACRO #macro_name
PARAMS (#p1, #p2 [, ...])
BEGIN
macro_body
END;

表11-18 マクロ定義の引数

引数 説明
MACRO

必須。Oracle GoldenGateマクロ定義の開始を指定します。

#macro_name

マクロ名。マクロおよびパラメータ名は、マクロ文字で開始する必要があります。デフォルトのマクロ文字は、番号記号(#)です(#macro1#param1など)。

マクロまたはパラメータ名は、文字や数字(あるいはその両方)を含む1語にできます。アンダースコア文字(_)やハイフン(-)などの特殊文字を使用できます。マクロ名の例として、#mymacro#macro1#macro_1#macro-1#macro$などがあります。パラメータ名の例として、#sourcecol#s#col1#col_1などがあります。

解析エラーを回避するため、マクロ名の最初の文字としてマクロ文字を使用することはできません。たとえば、##macroは無効です。必要な場合、MACROCHARパラメータを使用してマクロ文字を変更できます。Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

マクロ名とパラメータ名では、大/小文字は区別されません。引用符内のマクロ名またはパラメータ名は、無視されます。

PARAMS (#p1, #p2)

入力パラメータのオプション定義。パラメータ名のカンマ区切りリストを指定して、カッコで囲みます。入力値を置換するマクロ本体で、各パラメータを参照する必要があります。各パラメータを個別の行にリストすると読みやすくなります(必ず開きカッコと閉じカッコを使用してパラメータ・リストを囲んでください)。詳細は、「パラメータを含むマクロの呼出し」を参照してください。

BEGIN

マクロ本文を開始します。マクロ本文の前に指定する必要があります。

macro_body

マクロ本体。本体は、マクロにより実行される関数を定義する構文の文です。マクロ本体には、次のタイプの文を含めることができます。

  • 次のような単純なパラメータ文:

    COL1 = COL2
  • 次のようなパラメータ置換を含む複雑なパラメータ文:

    MAP #o.#t, TARGET #o.#t, KEYCOLS (#k), COLMAP (USEDEFAULTS); 
  • 次のような他のマクロの呼出し:

    #colmap (COL1, #sourcecol)
END;

マクロ定義を終了します。定義の末尾にはセミコロンが必要です。

パラメータを含むマクロ定義の例を次に示します。この場合、マクロでは、所有者、表およびKEYCOLS列の名前に解決される入力パラメータを含むMAP文のベース構文を提供することによって、オブジェクトおよび列のマッピングのタスクを簡略化します。

MACRO #macro1  
PARAMS ( #o, #t, #k )  
BEGIN  
MAP #o.#t, TARGET #o.#t, KEYCOLS (#k), COLMAP (USEDEFAULTS); 
END; 

パラメータを定義していないマクロの例を次に示します。頻繁に使用するパラメータのセットを実行します。

MACRO #option_defaults
BEGIN
GETINSERTS
GETUPDATES
GETDELETES
INSERTDELETES
END;