@COMPUTE
@COMPUTE 함수를 사용하여 산술식의 값을 대상 열로 반환합니다. 함수에서 반환된 값은 문자열 형식입니다.
다음과 같이 산술 <expression>의 값을 다른 Oracle GoldenGate 함수로 반환할 때 @COMPUTE 구문을 생략할 수 있습니다.
@STRNUM ((AMOUNT1 + AMOUNT2), LEFT)
앞의 결과는 다음과 같은 결과를 반환합니다.
@STRNUM ((@COMPUTE (AMOUNT1 + AMOUNT2), LEFT)
산술식은 다음 요소의 조합일 수 있습니다.
-
숫자
-
숫자를 포함하는 열의 이름
-
숫자를 반환하는 함수
-
산술 연산자:
-
(더하기)
-
(빼기)
-
(곱하기)
/(나누기)
(remainder)
-
-
비교 연산자
(보다 큼)
=(크거나 같음)
<(보다 작음)
<=(작거나 같음)
=(같음)
<>(같지 않음)
비교에서 파생된 결과는 0(
FALSE표시) 또는 0이 아닌(TRUE표시)일 수 있습니다. -
괄호(표현식에서 결과 그룹화용)
-
결합 연산자
AND,OR입니다. Oracle GoldenGate는 결합 표현식의 필요한 부분만 평가합니다. 명령문이FALSE이면 나머지 표현식은 무시됩니다. 누락되거나 널일 수 있는 필드를 평가할 때 유용할 수 있습니다. 예를 들어,COL1의 값이25이고COL2의 값이10인 경우 다음을 사용할 수 있습니다.@COMPUTE (COL1 > 0 AND COL2 < 3)는0를 반환합니다.@COMPUTE (COL1 < 0 AND COL2 < 3)는0를 반환합니다.COL2 < 3는 평가되지 않습니다.@COMPUTE ((COL1 + COL2)/5)은7을 반환합니다.
구문
@COMPUTE (<expression>)
<expression>
적합한 산술 표현식입니다. 소수점 이하 자릿수를 더한 숫자 값은 17자리보다 클 수 없습니다. 이 제한을 초과하면 @COMPUTE는 다음과 유사한 오류를 반환합니다.
2013-08-01 01:54:22 ERROR OGG-01334 Error mapping data from <column> to <column> in function COMPUTE.
예제
예 1
AMOUNT_TOTAL = @COMPUTE (AMT + AMT2)
예 2
AMOUNT_TOTAL = @IF (AMT >= 0, AMT * 100, 0)
예 3
ANNUAL_SALARY = @COMPUTE (MONTHLY_SALARY * 12)
mod(id,10) = 1 MAP otest.tab,TARGET mtest.tab1,FILTER (@compute (id \ 10) = 1)
이 예제는 나머지 SQL을 실행하는 방법을 보여줍니다. 3자의 id \ 10 사이에 공백이 있는지 확인합니다. 그렇지 않으면 필터 구문 오류로 보고됩니다.