使用 MAPEXCEPTION

當 MAP 敘述句中的來源和目標表格名稱是萬用字元時,MAPEXCEPTION 即有效。將 MAPEXCEPTION 子句放在一般 MAP 敘述句中,與將來源表格對應至目標表格的子句相同。Replicat 會將從所有萬用字元表格產生錯誤的所有作業,對應至相同的異常狀況表格;因此,異常狀況表格應包含所有萬用字元表格中之所有資料欄的超集。

因為您無法個別對應萬用字元組態中的資料欄,請使用 COLMAP 子句搭配 USEDEFAULTS 選項來處理萬用字元表格的資料欄對應 (如果適用,請使用 COLMATCH 參數),並使用明確的資料欄對應來對應任何其他資訊,例如使用資料欄轉換函數或 SQLEXEC 擷取的資料欄對應。

使用 MAPEXCEPTION 時,請在 MAPEXCEPTION 子句中包含 INSERTALLRECORDS 參數。INSERTALLRECORDS 會將所有作業類型套用到例外表格作為 INSERT 作業。這是為了保留例外情況的正確記錄,並防止例外情況表發生完整性錯誤所必需的。

如需有關這些參數的詳細資訊,請參閱 Oracle GoldenGate 的參數與函數參照。

範例 9-22 MAPEXCEPTION

此範例說明如何使用 MAPEXCEPTION 進行例外對應。MAP 和 TARGET 子句包含萬用字元來源和目標表格名稱。處理名稱以 TRX 開頭的任何表格時,會使用指定的對應擷取至 fin.trxexceptions 表格。

MAP src.trx*, TARGET trg.*,
MAPEXCEPTION (TARGET fin.trxexceptions,
INSERTALLRECORDS,
COLMAP (USEDEFAULTS,
ACCT_NO = ACCT_NO,
OPTYPE = @GETENV ('LASTERR', 'OPTYPE'),
DBERR = @GETENV ('LASTERR', 'DBERRNUM'),
DBERRMSG = @GETENV ('LASTERR', 'DBERRMSG')
)
);