@IF
使用 @IF 函數可根據條件傳回兩個值的其中一個。您可以將 @IF 函數與其他 Oracle GoldenGate 函數搭配使用,以開始條件引數來測試一或多個異常狀況條件。您可以根據測試結果直接處理。如有需要,您可以巢狀 @IF 陳述式。
語法
@IF (<condition>, <value_if_non-zero>, <value_if-zero>)
<condition>
有效的條件表示式或 Oracle GoldenGate 函數。只能針對數值比較使用數值運算子 (例如 =、> 或 <)。如果是字元比較,請使用其中一個字元比較函數。
<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
以下會傳回 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 資料欄對應函數會預期為數值結果。必須使用單引號指定資料欄值。