@COMPUTE
Utilisez la fonction @COMPUTE pour renvoyer la valeur d'une expression arithmétique vers une colonne cible. La valeur renvoyée par la fonction est sous la forme d'une chaîne.
Vous pouvez omettre l'expression @COMPUTE lorsque vous renvoyez la valeur d'une fonction arithmétique <expression> à une autre fonction Oracle GoldenGate, comme dans :
@STRNUM ((AMOUNT1 + AMOUNT2), LEFT)
Le résultat précédent renvoie le même résultat que :
@STRNUM ((@COMPUTE (AMOUNT1 + AMOUNT2), LEFT)
Les expressions arithmétiques peuvent être des combinaisons des éléments suivants.
-
Nombres
-
Noms des colonnes qui contiennent des nombres
-
Fonctions renvoyant des nombres
-
Opérateurs arithmétiques:
-
(plus)
-
(minus)
-
(signe multiplier)
/ (division)
(remainder)
-
-
Opérateurs de comparaison :
(supérieur à,)
= (supérieur ou égal à)
< (inférieur à)
<= (inférieur ou égal à)
= (égal à)
<> (différent)
Les résultats dérivés des comparaisons peuvent être nuls (indiquant
FALSE) ou non nuls (indiquantTRUE). -
Parenthèses (pour regrouper les résultats dans l'expression)
-
Opérateurs de conjonction
AND,OR. Oracle GoldenGate évalue uniquement la partie nécessaire d'une expression de conjonction. Une fois qu'une instruction estFALSE, le reste de l'expression est ignoré. Cela peut être utile lors de l'évaluation de champs qui peuvent être manquants ou nuls. Par exemple, si la valeur deCOL1est25et que la valeur deCOL2est10, les éléments suivants sont possibles :@COMPUTE (COL1 > 0 AND COL2 < 3)renvoie0.@COMPUTE (COL1 < 0 AND COL2 < 3)renvoie0.COL2 < 3n'est jamais évalué.@COMPUTE ((COL1 + COL2)/5)renvoie7.
Syntaxe
@COMPUTE (<expression>)
<expression>
Expression arithmétique valide. La valeur numérique plus la précision ne peut pas être supérieure à 17 chiffres. Si cette limite est dépassée, @COMPUTE renvoie une erreur similaire à la suivante.
2013-08-01 01:54:22 ERROR OGG-01334 Error mapping data from <column> to <column> in function COMPUTE.
Exemples
Exemple 1
AMOUNT_TOTAL = @COMPUTE (AMT + AMT2)
Exemple 2
AMOUNT_TOTAL = @IF (AMT >= 0, AMT * 100, 0)
Exemple 3
ANNUAL_SALARY = @COMPUTE (MONTHLY_SALARY * 12)
mod(id,10) = 1 MAP otest.tab,TARGET mtest.tab1,FILTER (@compute (id \ 10) = 1)
Cet exemple montre comment obtenir le reste du code SQL. Assurez-vous qu'il y a un espace entre id \ 10 dans les trois caractères, sinon il sera signalé comme une erreur de syntaxe de filtre.