@IF

@IFファンクションでは、条件に基づいて2つの値のうち1つを返します。@IFファンクションは、他のOracle GoldenGateファンクションとともに使用して、1つ以上の例外条件をテストする条件引数を開始できます。テストの結果に基づいて処理を実行するように指示できます。@IF文は、必要に応じてネストできます。

構文

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

<condition>

有効な条件式またはOracle GoldenGateファンクション。数値演算子(= 、>、<など)は、数値比較でのみ使用します。文字比較では、文字比較ファンクションの1つを使用します。

<value_if_non-zero>

非ゼロをtrueとみなします。

<value_if_zero>

ゼロ(0)をfalseとみなします。

例

例1

次の例では、AMT列がゼロより大きい場合にのみ量が返され、それ以外の場合はゼロが返されます。

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

例2

次の例では、STATE列がCA、AZ、またはNVの場合にWESTが返され、それ以外の場合はEASTが返されます。

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

例3

次の例では、2つの列が両方ともゼロより大きい場合に、PRICE列にQUANTITY列を掛けた結果が返されます。

  1. それ以外の場合は、@COLSTAT (NULL)ファンクションによって、ターゲット列にNULL値が生成されます。
ORDER_TOTAL = @IF (PRICE > 0 AND QUANTITY > 0, PRICE * QUANTITY,
@COLSTAT (NULL))

例4

次の例は、ネストされた@IF文を示します。この例では、QUANTITYが10を超え、アイテムの価格がPRICEの90%になります。

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

ノート: カッコ()で囲むと、Oracle GoldenGate列マッピング関数は数値の結果を受け入れます。列値は一重引用符を使用して指定する必要があります。