@COMPUTE
Use a função @COMPUTE para retornar o valor de uma expressão aritmética para uma coluna de destino. O valor retornado da função está na forma de uma string.
Você pode omitir a frase @COMPUTE ao retornar o valor de uma <expression> aritmética para outra função do Oracle GoldenGate, como em:
@STRNUM ((AMOUNT1 + AMOUNT2), LEFT)
O texto anterior retorna o mesmo resultado que:
@STRNUM ((@COMPUTE (AMOUNT1 + AMOUNT2), LEFT)
As expressões aritméticas podem ser combinações dos seguintes elementos.
-
Números
-
Os nomes das colunas que contêm números
-
Funções que retornam números
-
Operadores aritméticos:
-
(símbolo de adição)
-
(menos)
-
(símbolo de multiplicação)
/ (dividir)
(lembrete)
-
-
Operadores de comparação:
(maior que)
= (maior que ou igual)
< (menos que)
<= (menor que ou igual)
= (igual)
<> (diferente)
Os resultados que são derivados de comparações podem ser zero (indicando
FALSE) ou diferente de zero (indicandoTRUE). -
Parênteses (para agrupar resultados na expressão)
-
Os operadores de conjunção
AND,OR. O Oracle GoldenGate só avalia a parte necessária de uma expressão de conjunção. Quando uma instrução éFALSE, o restante da expressão é ignorado. Isso pode ser valioso ao avaliar campos que podem estar ausentes ou nulos. Por exemplo, se o valor deCOL1for25e o valor deCOL2for10, as seguintes opções serão possíveis:@COMPUTE (COL1 > 0 AND COL2 < 3)retorna0.@COMPUTE (COL1 < 0 AND COL2 < 3)retorna0.COL2 < 3nunca é avaliado.@COMPUTE ((COL1 + COL2)/5)retorna7.
Sintaxe
@COMPUTE (<expression>)
<expression>
Uma expressão aritmética válida. O valor numérico mais a precisão não pode ter mais de 17 dígitos. Se esse limite for excedido, o @COMPUTE retornará um erro semelhante ao seguinte.
2013-08-01 01:54:22 ERROR OGG-01334 Error mapping data from <column> to <column> in function COMPUTE.
Exemplos
Exemplo 1
AMOUNT_TOTAL = @COMPUTE (AMT + AMT2)
Exemplo 2
AMOUNT_TOTAL = @IF (AMT >= 0, AMT * 100, 0)
Exemplo 3
ANNUAL_SALARY = @COMPUTE (MONTHLY_SALARY * 12)
mod(id,10) = 1 MAP otest.tab,TARGET mtest.tab1,FILTER (@compute (id \ 10) = 1)
Este exemplo ilustra como obter o restante do SQL. Certifique-se de que haja um espaço entre id \ 10 nos três caracteres; caso contrário, ele será reportado como um erro de sintaxe de filtro.