• 하나 이상의 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)),
  • update될 때마다 COUNT 컬럼의 현재 값을 추출하는 쿼리.
  • BEFOREFILTER 옵션은 FILTER 절을 처리기 전에 쿼리나 PLSQL이 실행되도록하는 옵션.
  • SQLEXEC 에서 추출한 값은 실행 중인FILTER 내부에서 사용된다.
FILTER (BALANCE > 15000),
  • BALNACE가 1500보다 큰 값을 추출
FILTER (ON UPDATE, @BEFORE (COUNT) = CHECK.COUNT)
  • 또다른 FILTER 절 사용 가능.
  • update 전에 소스 COUNT 컬럼의 값과 target 컬럼을 업데이트 전의 컬럼 값을 매칭한다.
;
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.
 
 
 
@COMPUTE 함수
  • 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

+ Recent posts