@COMPUTE
Utilizzare la funzione @COMPUTE per restituire il valore di un'espressione aritmetica a una colonna di destinazione. Il valore restituito dalla funzione è sotto forma di stringa.
È possibile omettere la frase @COMPUTE quando si restituisce il valore di un <expression> aritmetico a un'altra funzione di Oracle GoldenGate, come descritto di seguito.
@STRNUM ((AMOUNT1 + AMOUNT2), LEFT)
Il precedente restituisce lo stesso risultato di:
@STRNUM ((@COMPUTE (AMOUNT1 + AMOUNT2), LEFT)
Le espressioni aritmetiche possono essere combinazioni dei seguenti elementi.
-
Numeri
-
I nomi delle colonne contenenti numeri
-
Funzioni che restituiscono numeri
-
Operatori aritmetici:
-
(simbolo dell'addizione)
-
(meno)
-
(simbolo della moltiplicazione)
/ (divisione)
(remainder)
-
-
Operatori del confronto:
(maggiore di)
= (maggiore o uguale a)
< (inferiore a)
<= (minore o uguale a)
= (uguale a)
<> (diverso da)
I risultati derivati dai confronti possono essere zero (indicando
FALSE) o diverso da zero (indicandoTRUE). -
Parentesi (per il raggruppamento dei risultati nell'espressione)
-
Operatori di congiunzione
AND,OR. Oracle GoldenGate valuta solo la parte necessaria di un'espressione di congiunzione. Una volta che un'istruzione èFALSE, il resto dell'espressione viene ignorato. Ciò può essere utile quando si valutano campi mancanti o nulli. Ad esempio, se il valore diCOL1è25e il valore diCOL2è10, sono possibili le operazioni riportate di seguito.@COMPUTE (COL1 > 0 AND COL2 < 3)restituisce0.@COMPUTE (COL1 < 0 AND COL2 < 3)restituisce0.COL2 < 3non viene mai valutato.@COMPUTE ((COL1 + COL2)/5)restituisce7.
Sintassi
@COMPUTE (<expression>)
<expression>
Espressione aritmetica valida. Il valore numerico più la precisione non può essere maggiore di 17 cifre. Se questo limite viene superato, @COMPUTE restituisce un errore simile al seguente.
2013-08-01 01:54:22 ERROR OGG-01334 Error mapping data from <column> to <column> in function COMPUTE.
Esempi
Esempio 1
AMOUNT_TOTAL = @COMPUTE (AMT + AMT2)
Esempio 2
AMOUNT_TOTAL = @IF (AMT >= 0, AMT * 100, 0)
Esempio 3
ANNUAL_SALARY = @COMPUTE (MONTHLY_SALARY * 12)
mod(id,10) = 1 MAP otest.tab,TARGET mtest.tab1,FILTER (@compute (id \ 10) = 1)
In questo esempio viene illustrato come ottenere l'istruzione SQL rimanente. Assicurarsi che vi sia uno spazio tra id \ 10 nei tre caratteri, altrimenti verrà segnalato come errore di sintassi del filtro.