@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 列映射函数需要数字结果。必须使用单引号指定列值。