@COMPUTE
@COMPUTEファンクションでは、算術式の値をターゲット列に返します。ファンクションから返される値は、文字列形式です。
算術式の<expression>の値を別のOracle GoldenGateファンクションに返すときは、次のように@COMPUTE句を省略できます。
@STRNUM ((AMOUNT1 + AMOUNT2), LEFT)
前述は、次と同じ結果を返します。
@STRNUM ((@COMPUTE (AMOUNT1 + AMOUNT2), LEFT)
算術式では、次の要素を組み合せることができます。
-
数値
-
数字を含む列名
-
数字を返す関数
-
算術演算子:
-
(プラス)
-
(マイナス)
-
(乗算)
/ (除算)
(remainder)
-
-
比較演算子は、次のとおりです。
(次より大きい)
= (次以上)
< (未満)
<= (以下)
= (等しい)
<> (次と等しくない)
比較から導出した結果はゼロ(
FALSEを示す)またはゼロ以外(TRUEを示す)になります。 -
カッコ(式の結果をグループ化)
-
結合演算子
AND、OR。Oracle GoldenGateは、結合式の必要部分のみを評価します。文がFALSEになると、式の残りの部分は無視されます。この動作は、紛失またはNULLの可能性があるフィールドを評価するときに役立ちます。たとえば、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の3つの文字の間にスペースがあることを確認してください。そうでない場合はフィルタ構文エラーとしてレポートされます。