@COMPUTE
使用 @COMPUTE 函數可將算術表示式的值傳回目標資料欄。從函數傳回的值會以字串的形式呈現。
將算術 <expression> 的值傳回另一個 Oracle GoldenGate 函數時,您可以省略 @COMPUTE 片語,如下所示:
@STRNUM ((AMOUNT1 + AMOUNT2), LEFT)
先前的傳回結果與下列相同:
@STRNUM ((@COMPUTE (AMOUNT1 + AMOUNT2), LEFT)
算術表示式可以是下列元素的組合。
-
數字
-
包含數字的資料欄名稱
-
傳回數字的函數
-
算術運算子:
-
(加號)
-
(減號)
-
(乘號)
/ (除)
(remainder)
-
-
比較運算元:
(大於)
= (大於或等於)
< (小於)
<= (小於或等於)
= (等於)
<> (不等於)
從比較衍生的結果可以是零 (表示
FALSE) 或非零 (表示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。請確定 id \ 10 在三個字元之間有空格,否則將報告為篩選語法錯誤。