- 하나 이상의 OGG 컬럼 변환 함수 또는 기본 operator를 사용하여 numeric 값에 기반하여 데이터를 select하기 위해 FILTER 절을 사용한다.
- string 기반 컬럼을 filter하기 위해서는 WHERE 구문 또는 OGG string 변환 함수를 사용한다.
- FILTER는 하나라도 실패하거나 모드 패스될 때까지 리스트된 순서대로 실행하며, 하나라도 실패하면 모두 실패처리된다.
-- TABLE 에서 FILTER 사용
TABLE source_table,
, FILTER (
[, ON INSERT | ON UPDATE| ON DELETE]
[, IGNORE INSERT | IGNORE UPDATE | IGNORE DELETE]
, filter_clause);
-- MAP에서 FILTER 사용
MAP source_table, TARGET target_table,
, FILTER (
[, ON INSERT | ON UPDATE| ON DELETE]
[, IGNORE INSERT | IGNORE UPDATE | IGNORE DELETE]
[, RAISEERROR error_number]
, filter_clause);
- "ON INSERT | ON UPDATE | ON DELETE IGNORE INSERT | IGNORE UPDATE | IGNORE DELETE" 옵션으로 filter 절에서 사용하는 SQL 작업을 지정.
- RAISEERROR 옵션은 사용자 지정 오류를 생성하도록 MAP의 FILTER절에서 사용
REPERROR (9999, EXCEPTION)
MAP OWNER.SRCTAB, TARGET OWNER.TARGTAB,
SQLEXEC (ID CHECK, ON UPDATE, QUERY ' SELECT COUNT FROM TARGTAB WHERE PKCOL = :P1 ', PARAMS (P1 = PKCOL)),
FILTER (BALANCE > 15000),
FILTER (ON UPDATE, @BEFORE (COUNT) = CHECK.COUNT)
;
MAP OWNER.SRCTAB, TARGET OWNER.TARGEXC,
EXCEPTIONSONLY,
COLMAP ( USEDEFAULTS,
ERRTYPE = 'UPDATE FILTER FAILED'
);
Parameter file
|
Description
|
REPERROR (9999, EXCEPTION)
|
Raises an exception for the specified error.
|
MAP OWNER.SRCTAB, TARGET OWNER.TARGTAB,
|
Starts the MAP statement.
|
SQLEXEC (ID CHECK, ON UPDATE,
QUERY ' SELECT COUNT FROM TARGTAB '
'WHERE PKCOL = :P1 ',
PARAMS (P1 = PKCOL)),
|
|
FILTER (BALANCE > 15000),
|
|
FILTER (ON UPDATE, @BEFORE (COUNT) = CHECK.COUNT)
|
|
;
|
The semicolon concludes the MAP statement.
|
MAP OWNER.SRCTAB, TARGET OWNER.TARGEXC, EXCEPTIONSONLY, COLMAP (USEDEFAULTS, ERRTYPE = 'UPDATE FILTER FAILED');
|
Designates an exceptions MAP statement. The REPERROR clause for error 9999 ensures that the exceptions map to TARGEXC will be executed.
|
- product price 와 product amount의 곱 이 10000 이상인 record 추출
- MAP SALES.TCUSTORD, TARGET SALES.TORD,
- FILTER (@COMPUTE (PRODUCT_PRICE * PRODUCT_AMOUNT) > 10000);
@STREQ 함수
- character column의 값 'JOE'인 record를 추출하는 함수
- TABLE ACCT.TCUSTORD, FILTER (@STREQ ("Name", 'joe') > 0);
RECORD SELECT
- amount 컬럼이 50보다 크고, update, delete 작업인 record 선택
- TABLE ACT.TCUSTORD, FILTER (ON UPDATE, ON DELETE, AMOUNT > 50);
@RANGE 함수
- MAP sales.acct, TARGET sales.acct, FILTER (@RANGE (1, 2, ID)
'ORACLE > 이중화(HA)' 카테고리의 다른 글
OGG19c EXTRACT/REPLICAT 구성 방법 (1) | 2024.03.21 |
---|---|
[OGG] COLMATCH (0) | 2024.01.20 |
OGG 파일 설정 (0) | 2022.11.30 |
OGG 12c 설치 구성 (0) | 2019.10.18 |
integrated extract 구성 (0) | 2019.10.18 |