@IF
@IF
ファンクションでは、条件に基づいて2つの値のうち1つを返します。@IF
ファンクションは、他のOracle GoldenGateファンクションとともに使用して、1つ以上の例外条件をテストする条件引数を開始できます。テストの結果に基づいて処理を実行するように指示できます。@IF
文は、必要に応じてネストできます。
構文
@IF (condition, value_if_non-zero, value_if-zero)
例
- 例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
列を掛けた結果が返されます。それ以外の場合は、@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列マッピング関数は数値の結果を受け入れます。列値は一重引用符を使用して指定する必要があります。