@EVAL

使用 @EVAL 函数可根据一系列独立测试选择值。对您可以测试的条件数没有限制。如果案例数量较大,请先列出最常遇到的条件,以获得最佳性能。

对于此功能,Oracle GoldenGate 支持使用转义序列来表示 Unicode 中字符串列中的字符,或 Microsoft Windows、UNIX 和 Linux 操作系统的本机字符编码中的字符。如果以 Unicode 形式提供了任何参数,则目标列必须是 SQL Unicode 数据类型。

语法

@EVAL (<condition>, <result>
[<condition>, <result>] [, ....]
[, <default_result>])

<condition>

使用标准条件运算符的条件测试。可以指定多个条件。

<result>

要基于条件测试的结果返回的值或字符串。将文字值括在单引号内。为所使用的每个条件指定结果。

<default_result>

如果未满足任何条件,则返回默认结果。默认结果是可选的。

##

示例

在以下示例中,如果 AMOUNT 列大于 10000,则返回 high amount 的结果。如果 AMOUNT 大于 5000(且小于或等于 10000),将返回 somewhat high 的结果(除非满足前一个条件)。如果两个条件都不满足,将返回 COLUMN_MISSING 指示,因为未指定缺省结果。

AMOUNT_DESC = @EVAL (AMOUNT > 10000, 'high amount', AMOUNT > 5000, 'somewhat high')

下面是对上述示例的修改。它返回相同的结果,只是指定了默认值,如果 AMOUNT 小于或等于 5000,则返回 lower 的结果。

@EVAL (AMOUNT > 10000, 'high amount', AMOUNT > 5000, 'somewhat high', 'lower')