@IF

Utilizzare la funzione @IF per restituire uno dei due valori, in base a una condizione. È possibile utilizzare la funzione @IF con altre funzioni di Oracle GoldenGate per avviare un argomento condizionale che esegue il test di una o più condizioni di eccezione. È possibile indirizzare l'elaborazione in base ai risultati del test. Se necessario, è possibile nidificare le istruzioni @IF.

Sintassi

@IF (<condition>, <value_if_non-zero>, <value_if-zero>)

<condition>

Un'espressione condizionale valida o una funzione Oracle GoldenGate. Utilizzare gli operatori numerici (ad esempio =, > o <) solo per i confronti numerici. Per il confronto dei caratteri, utilizzare una delle funzioni di confronto dei caratteri.

<value_if_non-zero>

Non zero è considerato true.

<value_if_zero>

Lo zero (0) è considerato false.

Esempi

Esempio 1

Di seguito viene restituito un importo solo se la colonna AMT è maggiore di zero, altrimenti viene restituito zero.

AMOUNT_COL = @IF (AMT > 0, AMT, 0)

Esempio 2

Di seguito viene restituito WEST se la colonna STATE è CA, AZ o NV, altrimenti restituisce EAST.

REGION = @IF (@VALONEOF (STATE, 'CA', 'AZ', 'NV'), 'WEST', 'EAST')

Esempio 3

Di seguito viene restituito il risultato della colonna PRICE moltiplicata per la colonna QUANTITY se entrambe le colonne sono maggiori di

  1. In caso contrario, la funzione @COLSTAT (NULL) crea un valore NULL nella colonna di destinazione.
ORDER_TOTAL = @IF (PRICE > 0 AND QUANTITY > 0, PRICE * QUANTITY,
@COLSTAT (NULL))

Esempio 4

L'esempio seguente illustra un'istruzione @IF nidificata. Nell'esempio, se QUANTITY è maggiore di 10, il prezzo dell'articolo è pari al 90% di PRICE.

ORDER_TOTAL = @IF (PRICE > 0 AND QUANTITY > 0, @IF (QUANTITY > 10, (PRICE * 0.9) * QUANTITY, PRICE * QUANTITY), @COLSTAT(NULL))

Nota: se racchiusa tra parentesi (), la funzione di mapping delle colonne di Oracle GoldenGate prevede risultati numerici. Il valore della colonna deve essere specificato utilizzando virgolette singole.