@IF

Use a função @IF para retornar um dos dois valores, com base em uma condição. Você pode usar a função @IF com outras funções do Oracle GoldenGate para iniciar um argumento condicional que testa uma ou mais condições de exceção. Você pode direcionar o processamento com base nos resultados do teste. Você pode aninhar instruções @IF, se necessário.

Sintaxe

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

<condition>

Uma expressão condicional válida ou uma função do Oracle GoldenGate. Use operadores numéricos (como =, > ou <) apenas para comparações numéricas. Para comparações de caracteres, use uma das funções de comparação de caracteres.

<value_if_non-zero>

Diferente de zero é considerado true.

<value_if_zero>

Zero (0) é considerado uma false.

Exemplos

Exemplo 1

O seguinte retorna um valor somente se a coluna AMT for maior que zero; caso contrário, zero será retornado.

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

Exemplo 2

A seguir, retorna WEST se a coluna STATE for CA, AZ ou NV; caso contrário, retorna EAST.

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

Exemplo 3

A seguir, retorna o resultado da coluna PRICE multiplicado pela coluna QUANTITY se as duas colunas forem maiores que

  1. Caso contrário, a função @COLSTAT (NULL) criará um valor NULL na coluna de destino.
ORDER_TOTAL = @IF (PRICE > 0 AND QUANTITY > 0, PRICE * QUANTITY,
@COLSTAT (NULL))

Exemplo 4

O exemplo a seguir demonstra uma instrução @IF aninhada. No exemplo, se a QUANTITY for maior que 10, o preço do item será 90% da PRICE.

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

Observação: Quando entre parênteses (), a função de mapeamento de colunas do Oracle GoldenGate espera resultados numéricos. O valor da coluna deve ser especificado usando aspas simples.