@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 資料欄的結果 (如果兩個資料欄都大於)

  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 資料欄對應函數會預期為數值結果。必須使用單引號指定資料欄值。