@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
- Caso contrário, a função
@COLSTAT (NULL)criará um valorNULLna 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.